From 61451ddd92c31a1011dbd6e7c556ecec3f8b50b6 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 3 Dec 2020 11:31:40 +0100 Subject: [PATCH] Trading Orders Exchange API --- Projects/ProjectsSchema.json | 14 +++++++++++++ .../Low-Frequency-Trading}/ExchangeAPI.js | 2 +- .../Low-Frequency-Trading/TradingExecution.js | 21 +++++++++---------- .../Low-Frequency-Trading}/TradingOrders.js | 20 ++++++++---------- 4 files changed, 34 insertions(+), 23 deletions(-) rename {TaskServer/LowFrequencyTrading => Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading}/ExchangeAPI.js (99%) rename {TaskServer/LowFrequencyTrading => Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading}/TradingOrders.js (98%) diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index e80ea0b16..9e666f19b 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -645,6 +645,20 @@ "functionName": "newSuperalgosBotModulesSnapshots", "fileName": "Snapshots.js", "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Exchange API", + "propertyName": "exchangeAPI", + "functionName": "newSuperalgosBotModulesExchangeAPI", + "fileName": "ExchangeAPI.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Orders", + "propertyName": "tradingOrders", + "functionName": "newSuperalgosBotModulesTradingOrders", + "fileName": "TradingOrders.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" } ] }, diff --git a/TaskServer/LowFrequencyTrading/ExchangeAPI.js b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/ExchangeAPI.js similarity index 99% rename from TaskServer/LowFrequencyTrading/ExchangeAPI.js rename to Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/ExchangeAPI.js index c4114ab61..78bbce865 100644 --- a/TaskServer/LowFrequencyTrading/ExchangeAPI.js +++ b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/ExchangeAPI.js @@ -1,4 +1,4 @@ -exports.newExchangeAPI = function (processIndex) { +exports.newSuperalgosBotModulesExchangeAPI = function (processIndex) { let MODULE_NAME = "Exchange API"; diff --git a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js index c66dde66e..8fdb81a35 100644 --- a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js +++ b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js @@ -16,8 +16,7 @@ exports.newSuperalgosBotModulesTradingExecution = function (processIndex, tradin let tradingSystem let sessionParameters - const TRADING_ORDERS_MODULE = require('./TradingOrders.js') - let tradingOrdersModule = TRADING_ORDERS_MODULE.newTradingOrders(processIndex, tradingEngineModuleObject) + let tradingOrdersModuleObject = TS.projects.superalgos.botModules.tradingOrders.newSuperalgosBotModulesTradingOrders(processIndex, tradingEngineModuleObject) return thisObject @@ -26,7 +25,7 @@ exports.newSuperalgosBotModulesTradingExecution = function (processIndex, tradin tradingEngine = TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SIMULATION_STATE.tradingEngine sessionParameters = TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.tradingParameters - tradingOrdersModule.initialize() + tradingOrdersModuleObject.initialize() } function finalize() { @@ -34,16 +33,16 @@ exports.newSuperalgosBotModulesTradingExecution = function (processIndex, tradin tradingEngine = undefined sessionParameters = undefined - tradingOrdersModule.finalize() - tradingOrdersModule = undefined + tradingOrdersModuleObject.finalize() + tradingOrdersModuleObject = undefined } function mantain() { - tradingOrdersModule.mantain() + tradingOrdersModuleObject.mantain() } function reset() { - tradingOrdersModule.reset() + tradingOrdersModuleObject.reset() } async function runExecution( @@ -68,10 +67,10 @@ exports.newSuperalgosBotModulesTradingExecution = function (processIndex, tradin async function checkExecutionAlgorithms(executionNode) { for (let i = 0; i < executionNode.executionAlgorithms.length; i++) { let executionAlgorithm = executionNode.executionAlgorithms[i] - await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.marketBuyOrders, executionAlgorithm, executionNode) - await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.marketSellOrders, executionAlgorithm, executionNode) - await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.limitBuyOrders, executionAlgorithm, executionNode) - await tradingOrdersModule.checkOrders(tradingEngineStage, executionAlgorithm.limitSellOrders, executionAlgorithm, executionNode) + await tradingOrdersModuleObject.checkOrders(tradingEngineStage, executionAlgorithm.marketBuyOrders, executionAlgorithm, executionNode) + await tradingOrdersModuleObject.checkOrders(tradingEngineStage, executionAlgorithm.marketSellOrders, executionAlgorithm, executionNode) + await tradingOrdersModuleObject.checkOrders(tradingEngineStage, executionAlgorithm.limitBuyOrders, executionAlgorithm, executionNode) + await tradingOrdersModuleObject.checkOrders(tradingEngineStage, executionAlgorithm.limitSellOrders, executionAlgorithm, executionNode) } } diff --git a/TaskServer/LowFrequencyTrading/TradingOrders.js b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js similarity index 98% rename from TaskServer/LowFrequencyTrading/TradingOrders.js rename to Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js index 9c2c84a49..b03d31266 100644 --- a/TaskServer/LowFrequencyTrading/TradingOrders.js +++ b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js @@ -1,4 +1,4 @@ -exports.newTradingOrders = function (processIndex, tradingEngineModule) { +exports.newSuperalgosBotModulesTradingOrders = function (processIndex, tradingEngineModule) { /* The Trading Orders modules manages the execution of orders against the exchanges. */ @@ -16,9 +16,7 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { let tradingSystem let sessionParameters - const EXCHANGE_API_MODULE = require('./ExchangeAPI.js') - let exchangeAPIModule = EXCHANGE_API_MODULE.newExchangeAPI(processIndex) - + let exchangeAPIModuleObject = TS.projects.superalgos.botModules.exchangeAPI.newSuperalgosBotModulesExchangeAPI(processIndex) let announcementsModuleObject = TS.projects.superalgos.botModules.announcements.newSuperalgosBotModulesAnnouncements(processIndex) return thisObject @@ -28,7 +26,7 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { tradingEngine = TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SIMULATION_STATE.tradingEngine sessionParameters = TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.tradingParameters - exchangeAPIModule.initialize() + exchangeAPIModuleObject.initialize() announcementsModuleObject.initialize() } @@ -37,8 +35,8 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { tradingEngine = undefined sessionParameters = undefined - exchangeAPIModule.finalize() - exchangeAPIModule = undefined + exchangeAPIModuleObject.finalize() + exchangeAPIModuleObject = undefined announcementsModuleObject.finalize() announcementsModuleObject = undefined @@ -490,7 +488,7 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { } } - let orderId = await exchangeAPIModule.createOrder(tradingSystemOrder, tradingEngineOrder) + let orderId = await exchangeAPIModuleObject.createOrder(tradingSystemOrder, tradingEngineOrder) if (orderId !== undefined) { tradingEngineOrder.exchangeId.value = orderId @@ -517,7 +515,7 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { } } - let order = await exchangeAPIModule.getOrder(tradingSystemOrder, tradingEngineOrder) + let order = await exchangeAPIModuleObject.getOrder(tradingSystemOrder, tradingEngineOrder) if (order === undefined) { tradingSystem.warnings.push( @@ -885,7 +883,7 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { } /* Check if we can cancel the order at the Exchange. */ - let result = await exchangeAPIModule.cancelOrder(tradingSystemOrder, tradingEngineOrder) + let result = await exchangeAPIModuleObject.cancelOrder(tradingSystemOrder, tradingEngineOrder) if (result === true) { /* At this point we know which is the exit type for this order */ @@ -896,7 +894,7 @@ exports.newTradingOrders = function (processIndex, tradingEngineModule) { To sync our accounting, we need to check the order one last time and if it changed, fix it. */ - let order = await exchangeAPIModule.getOrder(tradingSystemOrder, tradingEngineOrder) + let order = await exchangeAPIModuleObject.getOrder(tradingSystemOrder, tradingEngineOrder) if (order === undefined) { tradingSystem.warnings.push(