From 3439c015fc3f396b3252f7385797256038bd7fb6 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 4 Dec 2020 17:18:23 +0100 Subject: [PATCH] Bug Fixes on the Optional Stages Feature --- .../Low-Frequency-Trading/TradingOrders.js | 13 ++++++++---- .../Low-Frequency-Trading/TradingStages.js | 21 ++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js index f104833a1..05a4a968d 100644 --- a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js +++ b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js @@ -271,7 +271,7 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { if (tradingEngineOrder.orderQuotedAsset.size.value <= 0) { tradingSystem.warnings.push( [ - [tradingEngineOrder.orderQuotedAsset.size.id, tradingSystemOrder.id ], + [tradingEngineOrder.orderQuotedAsset.size.id, tradingSystemOrder.id], 'Could not open this order because its size is zero.' ] ) @@ -387,6 +387,8 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { tradingEngineStage.stageBaseAsset.targetSize.value - tradingEngineStage.stageBaseAsset.sizePlaced.value + tradingEngineOrder.orderBaseAsset.size.value = TS.projects.superalgos.utilities.miscellaneousFunctions.truncateToThisPrecision(tradingEngineOrder.orderBaseAsset.size.value, 10) + tradingSystem.warnings.push( [ [tradingEngineStage.stageBaseAsset.targetSize.id, tradingEngineOrder.orderBaseAsset.size.id, tradingEngineStage.stageBaseAsset.sizePlaced.id], @@ -397,6 +399,7 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { /* Size in Quoted Asset */ tradingEngineOrder.orderQuotedAsset.size.value = tradingEngineOrder.orderBaseAsset.size.value * tradingEngineOrder.rate.value + tradingEngineOrder.orderQuotedAsset.size.value = TS.projects.superalgos.utilities.miscellaneousFunctions.truncateToThisPrecision(tradingEngineOrder.orderQuotedAsset.size.value, 10) break } case 'Quoted Asset': { @@ -414,6 +417,8 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { tradingEngineStage.stageQuotedAsset.targetSize.value - tradingEngineStage.stageQuotedAsset.sizePlaced.value + tradingEngineOrder.orderQuotedAsset.size.value = TS.projects.superalgos.utilities.miscellaneousFunctions.truncateToThisPrecision(tradingEngineOrder.orderQuotedAsset.size.value, 10) + tradingSystem.warnings.push( [ [tradingEngineStage.stageQuotedAsset.targetSize.id, tradingEngineOrder.orderQuotedAsset.size.id, tradingEngineStage.stageQuotedAsset.sizePlaced.id], @@ -424,7 +429,7 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { /* Size in Base Asset */ tradingEngineOrder.orderBaseAsset.size.value = tradingEngineOrder.orderQuotedAsset.size.value / tradingEngineOrder.rate.value - + tradingEngineOrder.orderBaseAsset.size.value = TS.projects.superalgos.utilities.miscellaneousFunctions.truncateToThisPrecision(tradingEngineOrder.orderBaseAsset.size.value, 10) break } } @@ -522,7 +527,7 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { if (order === undefined) { tradingSystem.warnings.push( [ - [tradingSystemOrder.id, tradingEngineOrder.id], + [tradingSystemOrder.id, tradingEngineOrder.id], 'Could not verify the status of this order at the exchange.' ] ) @@ -899,7 +904,7 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) { if (order === undefined) { tradingSystem.warnings.push( [ - [tradingSystemOrder.id, tradingEngineOrder.id], + [tradingSystemOrder.id, tradingEngineOrder.id], 'Could not verify the status of this order at the exchange, and syncronize the accounting.' ] ) diff --git a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js index 7b347dc20..f24371c4d 100644 --- a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js +++ b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js @@ -85,11 +85,11 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { } function reset() { + resetTradingEngineDataStructure() + tradingPositionModuleObject.reset() tradingStrategyModuleObject.reset() tradingExecutionModuleObject.reset() - - resetTradingEngineDataStructure() } function cycleBasedStatistics() { @@ -194,7 +194,7 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { tradingEngine.current.episode.distanceToEvent.triggerOff.value = 1 announcementsModuleObject.makeAnnoucements(triggerStage.triggerOff) - changeStageStatus('Trigger Stage', 'Closed') + changeStageStatus('Trigger Stage', 'Closed', 'Trigger Off Event') tradingStrategyModuleObject.closeStrategy('Trigger Off') } } @@ -243,7 +243,7 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { } } - changeStageStatus('Trigger Stage', 'Closed') + changeStageStatus('Trigger Stage', 'Closed', 'Position Taken') changeStageStatus('Open Stage', 'Opening') changeStageStatus('Manage Stage', 'Opening') } @@ -729,7 +729,7 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { tradingPositionModuleObject.closingPosition('Stop Loss') changeStageStatus('Close Stage', 'Opening') - changeStageStatus('Manage Stage', 'Closed') + changeStageStatus('Manage Stage', 'Closed', 'Stop Loss Hit') announcementsModuleObject.makeAnnoucements(strategy.closeStage) return } @@ -749,7 +749,7 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { tradingPositionModuleObject.closingPosition('Take Profit') changeStageStatus('Close Stage', 'Opening') - changeStageStatus('Manage Stage', 'Closed') + changeStageStatus('Manage Stage', 'Closed', 'Take Profit Hit') announcementsModuleObject.makeAnnoucements(strategy.closeStage) return } @@ -1077,9 +1077,16 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { resetStage(tradingEngine.current.strategyManageStage.status) } if (tradingEngine.current.strategyCloseStage.status.value === 'Closed') { - resetStage(tradingEngine.current.strategyCloseStage) + resetStage(tradingEngine.current.strategyCloseStage.status) } + if (tradingEngine.current.position.status.value === 'Closed') + { + resetStage(tradingEngine.current.strategyTriggerStage) + resetStage(tradingEngine.current.strategyOpenStage) + resetStage(tradingEngine.current.strategyManageStage) + resetStage(tradingEngine.current.strategyCloseStage) + } function resetStage(stage) { TS.projects.superalgos.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).TRADING_ENGINE_MODULE_OBJECT.initializeNode(stage) }