import { ParametersCombination } from "../models/ParametersCombination"; import { Configuration } from "../models/Configuration"; export class PermutationUtils { public static getParameterCombinationsFromConfiguration( configuration: Configuration ): ParametersCombination[] { let parametersCombinations: ParametersCombination[] = []; let minimumBuyThreshold: number = configuration.minimumBuyThreshold; let maximumBuyThreshold: number = configuration.maximumBuyThreshold; let buyThresholdPermutationStep: number = configuration.buyThresholdPermutationStep; let minimumSellThreshold: number = configuration.minimumSellThreshold; let maximumSellThreshold: number = configuration.maximumSellThreshold; let sellThresholdPermutationStep: number = configuration.sellThresholdPermutationStep; let minimumStopLossThreshold: number = configuration.minimumStopLossThreshold; let maximumStopLossThreshold: number = configuration.maximumStopLossThreshold; let stopLossThresholdPermutationStep: number = configuration.stopLossThresholdPermutationStep; for( let i = minimumBuyThreshold; i <= maximumBuyThreshold; i += buyThresholdPermutationStep ) { for( let j = minimumSellThreshold; j <= maximumSellThreshold; j += sellThresholdPermutationStep ) { for( let k = minimumStopLossThreshold; k <= maximumStopLossThreshold; k += stopLossThresholdPermutationStep ) { parametersCombinations.push( new ParametersCombination( i, j, k ) ); } } } return parametersCombinations; } }