Trading Orders Exchange API

This commit is contained in:
Luis Fernando Molina committed 2020-12-03 11:31:40 +01:00
1 parent bac5525b68
commit 61451ddd92
4 files changed
+34 -23

No files matched your search

+14
View File
@@ -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"
}
]
},
@@ -1,4 +1,4 @@
exports.newExchangeAPI = function (processIndex) {
exports.newSuperalgosBotModulesExchangeAPI = function (processIndex) {
let MODULE_NAME = "Exchange API";
@@ -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)
}
}
@@ -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(