import { Backtester } from "../business/Backtester"; import { ParametersCombination } from "../models/ParametersCombination"; import { PermutationUtils } from "../utils/PermutationUtils"; import { Configuration } from "../models/Configuration"; import { Candlestick } from "binance-api-client"; export class BacktesterFacade { public static async test( configuration: Configuration, candlesHistory: Candlestick[] ): Promise< [ ParametersCombination, number ] > { let bestMatch: [ ParametersCombination, number ] = [ null, Number.MIN_VALUE ]; let parametersCombinations: ParametersCombination[] = PermutationUtils.getParameterCombinationsFromConfiguration( configuration ); for( let parametersCombination of parametersCombinations ) { Backtester.initialize( configuration ); let resultingGain: number = await Backtester.test( parametersCombination, candlesHistory ); if( resultingGain > bestMatch[ 1 ] ) { bestMatch = [ parametersCombination, resultingGain ]; } } return bestMatch; } }