diff --git a/LowFrequencyTrading/TradingExecution.js b/LowFrequencyTrading/TradingExecution.js index 590613d32..8ca04ab8b 100644 --- a/LowFrequencyTrading/TradingExecution.js +++ b/LowFrequencyTrading/TradingExecution.js @@ -12,25 +12,35 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE let tradingEngine let tradingSystem + let sessionParameters const EXCHANGE_API_MODULE = require('./ExchangeAPI.js') let exchangeAPIModule = EXCHANGE_API_MODULE.newExchangeAPI(bot, logger) + const ANNOUNCEMENTS_MODULE = require('./Announcements.js') + let announcementsModule = ANNOUNCEMENTS_MODULE.newAnnouncements(bot, logger) + return thisObject function initialize() { tradingSystem = bot.simulationState.tradingSystem tradingEngine = bot.simulationState.tradingEngine + sessionParameters = bot.SESSION.parameters exchangeAPIModule.initialize() + announcementsModule.initialize() } function finalize() { tradingSystem = undefined tradingEngine = undefined + sessionParameters = undefined exchangeAPIModule.finalize() exchangeAPIModule = undefined + + announcementsModule.finalize() + announcementsModule = undefined } function checkExecution(executionNode, stageIsOpening, stageIsClosing, stageSizeLimit, stageOrdersSize, stageFilledSize) { @@ -89,7 +99,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE if (situationName !== undefined) { /* Open a new order */ - openOrder(tradingSystemOrder, tradingEngineOrder, situationName) + openOrder(executionAlgorithm, tradingSystemOrder, tradingEngineOrder, situationName) } } break @@ -120,7 +130,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE } } - function openOrder(tradingSystemOrder, tradingEngineOrder, situationName) { + function openOrder(executionAlgorithm, tradingSystemOrder, tradingEngineOrder, situationName) { /* Order Size Calculation */ tradingEngineOrder.size.value = tradingSystem.formulas.get(executionAlgorithm.positionSize.formula.id) * tradingSystemOrder.config.positionSizePercentage / 100 if (stageOrdersSize.value + tradingEngineOrder.size.value > stageSizeLimit.value) { @@ -440,7 +450,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { diff --git a/LowFrequencyTrading/TradingSystem.js b/LowFrequencyTrading/TradingSystem.js index 5ffdc50dd..14b9d34d5 100644 --- a/LowFrequencyTrading/TradingSystem.js +++ b/LowFrequencyTrading/TradingSystem.js @@ -53,6 +53,28 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM announcementsModule.initialize() snapshotsModule.initialize() tradingExecutionModule.initialize() + + /* Adding Functions to Trading System definition */ + + tradingSystem.checkConditions = function (situation, passed) { + /* Given a Situation, we check if all children conditions are true or not */ + for (let m = 0; m < situation.conditions.length; m++) { + + let condition = situation.conditions[m] + let value = false + if (tradingSystem.conditions.get(condition.id) !== undefined) { + value = tradingSystem.conditions.get(condition.id) + } + if (value === true) { + tradingSystem.highlights.push(condition.id) + } + else { + passed = false + } + tradingSystem.values.push([condition.id, value]) + } + return passed + } } function finalize() { @@ -354,7 +376,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -407,7 +429,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -445,7 +467,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -714,7 +736,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -744,7 +766,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -821,7 +843,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -851,7 +873,7 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM passed = true } - passed = checkConditions(situation, passed) + passed = tradingSystem.checkConditions(situation, passed) tradingSystem.values.push([situation.id, passed]) if (passed) { @@ -1116,25 +1138,5 @@ exports.newTradingSystem = function newTradingSystem(bot, logger, tradingEngineM return false } } - - function checkConditions(situation, passed) { - /* Given a Situation, we check if all children conditions are true or not */ - for (let m = 0; m < situation.conditions.length; m++) { - - let condition = situation.conditions[m] - let value = false - if (tradingSystem.conditions.get(condition.id) !== undefined) { - value = tradingSystem.conditions.get(condition.id) - } - if (value === true) { - tradingSystem.highlights.push(condition.id) - } - else { - passed = false - } - tradingSystem.values.push([condition.id, value]) - } - return passed - } }