UNPKG

@backtest/framework

Version:

Backtesting trading strategies in TypeScript / JavaScript

132 lines 6.87 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const main_1 = require("../main"); function main() { return __awaiter(this, void 0, void 0, function* () { (0, main_1.printInfo)(); const startDate = new Date('2024-01-01').getTime(); const endDate = new Date('2024-10-15').getTime(); const startTime = new Date('2024-03-01').getTime(); const endTime = new Date('2024-10-14').getTime(); const found = yield (0, main_1.findHistoricalData)('BTCEUR-8h'); console.log('found:', found); if (found) { const deleted = yield (0, main_1.deleteHistoricalData)('BTCEUR-8h'); console.log('deleted:', deleted); } const downloaded2 = yield (0, main_1.downloadHistoricalData)('BTCEUR', { interval: '1d', startDate: startDate, endDate: endDate }); console.log('downloaded2:', downloaded2); const downloaded1 = yield (0, main_1.downloadHistoricalData)('BTCEUR', { interval: '1h', startDate: startDate, endDate: endDate }); console.log('downloaded1:', downloaded1); const downloaded = yield (0, main_1.downloadHistoricalData)('BTCEUR', { interval: '8h', startDate: startDate, endDate: endDate }); console.log('downloaded:', downloaded); const exported = yield (0, main_1.exportFileCSV)('BTCEUR-8h'); console.log('exported:', exported); const allNames = yield (0, main_1.findHistoricalDataNames)(); console.log('allNames:', allNames); const allSets = yield (0, main_1.findHistoricalDataSets)(); console.log('allSets:', allSets.map(({ name }) => name).join(',')); const dataSet = yield (0, main_1.findHistoricalData)('BTCEUR-8h'); console.log('dataSet:', dataSet); const dataSet1 = yield (0, main_1.findHistoricalData)('BTCEUR-1h'); console.log('dataSet1:', dataSet1); const deleted = yield (0, main_1.deleteHistoricalData)('BTCEUR-8h'); console.log('deleted:', deleted); const imported = yield (0, main_1.importFileCSV)('BTC', 'EUR', '8h', './csv/BTCEUR-8h.csv'); console.log('imported:', imported); const dataSet2 = yield (0, main_1.findHistoricalData)('BTCEUR-8h'); console.log('dataSet2:', dataSet2); const scan = yield (0, main_1.scanStrategies)(); console.log('scan:', scan); const strategies = yield (0, main_1.findStrategies)(); console.log('strategies:', strategies); const strategiesNames = yield (0, main_1.findStrategyNames)(); console.log('strategiesNames:', strategiesNames); const runStrategyResult = yield (0, main_1.runStrategy)({ strategyName: 'demo', historicalData: ['BTCEUR-1d'], params: { lowSMA: 10, highSMA: 50 }, startingAmount: 1000, startTime: startTime, endTime: endTime }); console.log('runStrategyResult:', runStrategyResult.name); const parsed = yield (0, main_1.parseRunResultsStats)(runStrategyResult); console.log('parsed:', parsed === null || parsed === void 0 ? void 0 : parsed.totals[0], parsed === null || parsed === void 0 ? void 0 : parsed.totals[1]); const saved = yield (0, main_1.saveResult)('demo-results', runStrategyResult, true); console.log('saved:', saved); const resultsNames = yield (0, main_1.findResultNames)(); console.log('resultsNames:', resultsNames); const allResults = yield (0, main_1.findResults)(); console.log('allResults:', allResults.length); const deletedResults = yield (0, main_1.deleteResult)('demo-results'); console.log('deletedResults:', deletedResults); const runMultiStrategyResult = yield (0, main_1.runStrategy)({ strategyName: 'demo', historicalData: ['BTCEUR-8h', 'BTCEUR-1h'], params: {}, startingAmount: 1000, startTime: startTime, endTime: endTime, percentFee: 0, percentSlippage: 0 }); console.log('runMultiStrategyResult:', runMultiStrategyResult.name); const parsedMulti = yield (0, main_1.parseRunResultsStats)(runMultiStrategyResult); console.log('parsedMulti:', parsedMulti === null || parsedMulti === void 0 ? void 0 : parsedMulti.totals[0], parsedMulti === null || parsedMulti === void 0 ? void 0 : parsedMulti.totals[1]); const savedMulti = yield (0, main_1.saveMultiResult)('demo-multi-results', runMultiStrategyResult); console.log('savedMulti:', savedMulti); const multiResultsNames = yield (0, main_1.findMultiResultNames)(); console.log('multiResultsNames:', multiResultsNames); const allMultiResults = yield (0, main_1.findMultiResults)(); console.log('allMultiResults:', allMultiResults.length); const deletedMultiResult = yield (0, main_1.deleteMultiResult)('demo-multi-results'); console.log('deletedMultiResult:', deletedMultiResult); const multiResultsNames2 = yield (0, main_1.findMultiResultNames)(); console.log('multiResultsNames2:', multiResultsNames2); const runAdvancedStrategyResult = yield (0, main_1.runStrategy)({ strategyName: 'demo', historicalData: ['BTCEUR-1d', 'BTCEUR-8h'], supportHistoricalData: ['BTCEUR-1h', 'BTCEUR-8h'], startingAmount: 1000, startTime: startTime, endTime: endTime, params: { lowSMA: 10, highSMA: 50 }, percentFee: 0, percentSlippage: 0, rootPath: undefined }); console.log('runStrategyResult:', runStrategyResult.name); const parsedAdvanced = yield (0, main_1.parseRunResultsStats)(runAdvancedStrategyResult); console.log('parsedAdvanced:', parsedAdvanced.totals[0], parsedAdvanced.totals[1]); }); } main(); //# sourceMappingURL=demo.js.map