UNPKG

@backtest/command-line

Version:

This project is a CLI build around Backtest, a library for trading developers

108 lines 5.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 }); exports.resultsPortalMulti = resultsPortalMulti; const portals_1 = require("../../helpers/portals"); const run_strategy_1 = require("../strategies/run-strategy"); const charts_1 = require("../../helpers/charts"); const parse_1 = require("../../helpers/parse"); const headers_1 = require("../../infra/headers"); const colors_1 = require("../../infra/colors"); const framework_1 = require("@backtest/framework"); function resultsPortalMulti(results, newResult) { return __awaiter(this, void 0, void 0, function* () { if (!newResult) console.clear(); let back = false; let portalReturn = { error: false, data: '' }; let choices = [ '🎉 All Trading Results In Browser', '📋 Table Of All Trading Results In CLI', newResult ? '💾 Save Trading Results' : '🔥 Delete Trading Result', '🏃 Run Trading Strategy', '🔮 Run Trading Strategy (more options)', (0, colors_1.colorBack)('👈 Back') ]; while (!back) { (0, headers_1.headerStrategyResults)(); yield (0, portals_1.handlePortalReturn)(portalReturn); const choiceCLI = yield (0, portals_1.interactCLI)({ type: 'autocomplete', message: 'Choose what to see:', choices }); let shouldClear = true; if (choiceCLI.includes('🎉')) { const runResultsStats = yield (0, framework_1.parseRunResultsStats)(results); const multiResultsParsed = (0, parse_1.parseMultiResults)([...results.multiResults], results.multiResults[0].assetAmounts.numberOfCandles, results.startingAmount, results.isMultiSymbol); const multiResults = { multiResults: [...multiResultsParsed], assetResults: results.multiResults[0].assetAmounts }; yield (0, charts_1.createResultsChartsMulti)(multiResults, results.multiResults, runResultsStats); shouldClear = false; } else if (choiceCLI.includes('📋')) { const runResultsStats = yield (0, framework_1.parseRunResultsStats)(results); const multiResults = (0, parse_1.parseMultiResults)([...results.multiResults], results.multiResults[0].assetAmounts.numberOfCandles, results.startingAmount, results.isMultiSymbol); console.log((0, colors_1.colorHeader)('* GENERAL *')); (0, parse_1.removeIndexFromTable)(runResultsStats.generalData); console.log((0, colors_1.colorHeader)('* TOTAL RESULTS *')); (0, parse_1.removeIndexFromTable)(runResultsStats.totals); if (!results.isMultiSymbol) { console.log((0, colors_1.colorHeader)('* ASSET AMOUNTS / PERCENTAGES *')); (0, parse_1.removeIndexFromTable)(runResultsStats.assetAmountsPercentages); } console.log((0, colors_1.colorHeader)('* ALL PERMUTATION RESULTS *')); (0, parse_1.removeIndexFromTable)(multiResults); shouldClear = false; } else if (choiceCLI.includes('💾')) { const allResults = yield (0, framework_1.findMultiResultNames)(); const resultsName = yield (0, portals_1.interactCLI)({ type: 'input', message: 'Type A Name For The Trading Results:' }); if (resultsName !== undefined) { results.name = resultsName; } let override = false; if (allResults.includes(results.name)) { const saveResultsChoice = yield (0, portals_1.interactCLI)({ type: 'autocomplete', message: `Results ${results.name} has saved results already, would you like to rewrite them`, choices: ['Yes', 'No'] }); override = saveResultsChoice === 'Yes'; } yield (0, framework_1.saveMultiResult)(results.name, results, override); return { error: false, data: `Successfully saved results for ${results.name}` }; } else if (choiceCLI.includes('🔥')) { yield (0, framework_1.deleteMultiResult)(results.name); return { error: false, data: `Successfully deleted results for ${results.name}` }; } else if (choiceCLI.includes('🏃')) { portalReturn = yield (0, run_strategy_1.runStrategyPortal)(true); } else if (choiceCLI.includes('🔮')) { portalReturn = yield (0, run_strategy_1.runStrategyPortal)(false); } else if (choiceCLI.includes('👈')) back = true; if (shouldClear) { console.clear(); } } return portalReturn; }); } //# sourceMappingURL=run-results-multi.js.map