Backtest Running again

This commit is contained in:
Luis Fernando Molina committed 2020-07-21 10:51:59 +02:00
1 parent 29cb678de3
commit 83bd8b4a11
2 files changed
+42 -30

No files matched your search

+13 -3
View File
@@ -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) {
+29 -27
View File
@@ -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
}
}