From 983bb1056797bf4ae8b4775944346daa3a3feb23 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 3 Aug 2020 14:53:56 +0200 Subject: [PATCH] Bug Fixes --- LowFrequencyTrading/Snapshots.js | 8 +++++--- LowFrequencyTrading/TradingExecution.js | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/LowFrequencyTrading/Snapshots.js b/LowFrequencyTrading/Snapshots.js index 89c10767b..49456433f 100644 --- a/LowFrequencyTrading/Snapshots.js +++ b/LowFrequencyTrading/Snapshots.js @@ -252,7 +252,7 @@ exports.newSnapshots = function newSnapshots(bot, logger) { function getResults(openDatetime, closeDatetime) { - let closeHeaders = ['Trade Number', 'Open Datetime', 'Close Datetime', 'Strategy Name', 'Trigger On Situation', 'Take Position Situation', 'Result', 'ROI', 'Exit Type'] + let closeHeaders = ['Trade Number', 'Open Datetime', 'Close Datetime', 'Strategy Name', 'Trigger On Situation', 'Take Position Situation', 'Result In Base Asset', 'Result In Quoted Asset', 'ROI in Base Asset', 'ROI in Quoted Asset', 'Exit Type'] closeValues = [ tradingEngine.episode.episodeCounters.positions.value, // Position Number (new Date(openDatetime)).toISOString(), // Open Datetime @@ -260,8 +260,10 @@ exports.newSnapshots = function newSnapshots(bot, logger) { tradingEngine.current.strategy.strategyName.value, // Strategy Name tradingEngine.current.strategy.situationName.value, // Trigger On Situation tradingEngine.current.position.situationName.value, // Take Position Situation - tradingEngine.current.position.positionStatistics.hitFail.value, // Result - tradingEngine.current.position.positionStatistics.ROI.value, // ROI + tradingEngine.current.position.positionBaseAsset.hitFail.value, // Result in Base Asset + tradingEngine.current.position.positionQuotedAsset.hitFail.value, // Result in Base Asset + tradingEngine.current.position.positionBaseAsset.ROI.value, // ROI in Base Asseet + tradingEngine.current.position.positionQuotedAsset.ROI.value, // ROI in Quoted Asset tradingEngine.current.position.exitType.value // Exit Type ] diff --git a/LowFrequencyTrading/TradingExecution.js b/LowFrequencyTrading/TradingExecution.js index 5a4687696..b9ae0bcb0 100644 --- a/LowFrequencyTrading/TradingExecution.js +++ b/LowFrequencyTrading/TradingExecution.js @@ -247,6 +247,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE tradingEngineOrder.rate.value = tradingSystem.formulas.get(tradingSystemOrder.positionRate.formula.id) if (tradingEngineOrder.rate.value === undefined) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.rate.value === undefined', tradingEngineOrder) } + if (isNaN(tradingEngineOrder.rate.value) === true) { badDefinitionUnhandledException(undefined, 'isNaN(tradingEngineOrder.rate.value) === true', tradingEngineOrder) } if (tradingEngineOrder.rate.value <= 0) { badDefinitionUnhandledException(undefined, 'tradingEngineOrder.rate.value <= 0', tradingEngineOrder) } tradingEngineOrder.rate.value = global.PRECISE(tradingEngineOrder.rate.value, 10) @@ -276,6 +277,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE /* Order Size Calculation */ let algorithmSize = tradingSystem.formulas.get(sizeFormula.id) if (algorithmSize === undefined) { badDefinitionUnhandledException(undefined, 'algorithmSize === undefined', sizeFormula) } + if (isNaN(algorithmSize) === true) { badDefinitionUnhandledException(undefined, 'isNaN(algorithmSize) === true', sizeFormula) } /* Validate that this config exists */ if (tradingSystemOrder.config.positionSizePercentage === undefined) { badDefinitionUnhandledException(undefined, 'tradingSystemOrder.config.positionSizePercentage === undefined', executionAlgorithm) } @@ -287,7 +289,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE if ( tradingEngineStageAsset.size.value + traingEngineOrderAsset.size.value > stageSizeLimit.value) { /* We reduce the size to the remaining size of the position. */ - traingEngineOrderAsset.size.value = stageSizeLimit.value - tradingEngineStageAsset.value + traingEngineOrderAsset.size.value = stageSizeLimit.value - tradingEngineStageAsset.size.value traingEngineOrderAsset.size.value = global.PRECISE(traingEngineOrderAsset.size.value, 10) }