Orders Ends with cycle

This commit is contained in:
Luis Fernando Molina committed 2020-08-11 13:28:43 +02:00
1 parent 8c37512760
commit f9dfe24440
4 files changed
+40 -17

No files matched your search

+11 -10
View File
@@ -68,23 +68,24 @@ exports.newTradingEngine = function newTradingEngine(bot, logger) {
function setCurrentCycle(cycle) {
switch (cycle) {
case 'First': {
tradingEngine.current.episode.cycle.begin.value = tradingEngine.current.episode.candle.begin.value
tradingEngine.current.episode.cycle.begin.value =
tradingEngine.current.episode.candle.begin.value +
sessionParameters.timeFrame.config.value
tradingEngine.current.episode.cycle.end.value =
tradingEngine.current.episode.candle.begin.value +
(
tradingEngine.current.episode.candle.end.value -
tradingEngine.current.episode.candle.begin.value + 1
) / 2 - 1
sessionParameters.timeFrame.config.value +
sessionParameters.timeFrame.config.value / 4 - 1
break
}
case 'Second': {
tradingEngine.current.episode.cycle.begin.value =
tradingEngine.current.episode.candle.begin.value +
(
tradingEngine.current.episode.candle.end.value -
tradingEngine.current.episode.candle.begin.value + 1
) / 2
tradingEngine.current.episode.cycle.end.value = tradingEngine.current.episode.candle.end.value
sessionParameters.timeFrame.config.value +
sessionParameters.timeFrame.config.value / 4
tradingEngine.current.episode.cycle.end.value =
tradingEngine.current.episode.candle.begin.value +
sessionParameters.timeFrame.config.value +
sessionParameters.timeFrame.config.value * 2 / 4 - 1
break
}
}
+16 -2
View File
@@ -164,6 +164,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Cancel the order at the Exchange, if needed. */
await exchangeCancelOrder(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, 'Cancel Event')
updateEndsWithCycle(tradingEngineOrder)
}
}
}
@@ -229,8 +231,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Create Order Procedure */
tradingEngineOrder.status.value = 'Open'
tradingEngineOrder.identifier.value = global.UNIQUE_ID()
tradingEngineOrder.begin.value = tradingEngine.current.episode.candle.end.value
tradingEngineOrder.end.value = tradingEngine.current.episode.candle.end.value
tradingEngineOrder.begin.value = tradingEngine.current.episode.cycle.begin.value
tradingEngineOrder.end.value = tradingEngine.current.episode.cycle.end.value
tradingEngineOrder.serialNumber.value = tradingEngine.current.episode.episodeCounters.orders.value
tradingEngineOrder.orderName.value = tradingSystemOrder.name
tradingEngineOrder.algorithmName.value = executionAlgorithm.name
@@ -520,6 +522,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Initialize this */
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
updateEndsWithCycle(tradingEngineOrder)
}
}
}
@@ -576,6 +580,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Initialize this */
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
updateEndsWithCycle(tradingEngineOrder)
}
if (order.remaining > 0 && order.status === AT_EXCHANGE_STATUS.CLOSED) {
@@ -585,6 +591,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Initialize this */
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
updateEndsWithCycle(tradingEngineOrder)
}
if (order.status === AT_EXCHANGE_STATUS.CANCELLED) {
@@ -594,6 +602,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
/* Initialize this */
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
updateEndsWithCycle(tradingEngineOrder)
}
syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order)
@@ -904,6 +914,10 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM
}
}
function updateEndsWithCycle(tradingEngineOrder) {
tradingEngineOrder.end.value = tradingEngine.current.episode.cycle.end.value
}
function updateCounters(tradingEngineOrder) {
if (tradingEngineOrder.status.value === 'Open') {
tradingEngineOrder.orderCounters.periods.value++
+9 -1
View File
@@ -31,7 +31,7 @@ exports.newTradingRecords = function newTradingRecords(bot, logger) {
outputDatasetsMap = undefined
}
function appendRecords() {
function appendRecords(cycle) {
/*
Here we add records to the output files. At the product config property nodePath
we have a pointer to the node that have the information we need to extract.
@@ -53,6 +53,14 @@ exports.newTradingRecords = function newTradingRecords(bot, logger) {
}
function persistRecords() {
/*
There are a few products configured to be saved only at an specific cycle.
*/
if (product.config.saveAtCycle !== undefined) {
if (cycle !== product.config.saveAtCycle) {
return
}
}
/* Clean the file from information of previous executions */
pruneOutputFile(product, outputDatasetArray)
+4 -4
View File
@@ -159,7 +159,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
await tradingSystemModule.run()
/* Add new records to the process output */
tradingRecordsModule.appendRecords()
tradingRecordsModule.appendRecords('First')
/* Reset Data Structures */
tradingSystemModule.reset()
@@ -198,7 +198,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
if (tradingEngine.current.episode.candle.index.value + 1 < candles.length) {
/* Add new records to the process output */
tradingRecordsModule.appendRecords()
tradingRecordsModule.appendRecords('Second')
tradingEngine.current.episode.candle.index.value++
@@ -213,7 +213,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
tradingEpisodeModule.closeEpisode()
/* Add new records to the process output */
tradingRecordsModule.appendRecords()
tradingRecordsModule.appendRecords('Second')
afterLoop()
}
@@ -222,7 +222,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
tradingEpisodeModule.updateExitType(exitType)
/* Add new records to the process output */
tradingRecordsModule.appendRecords()
tradingRecordsModule.appendRecords('Second')
afterLoop()
}