Merge pull request #501 from Luis-Fernando-Molina/develop
Contribution: Info Messages Handling improved and integrated with the Docs
This commit is contained in:
8 files changed
+245
-26
No files matched your search
@@ -1 +1 @@
|
||||
{"type":"Trading Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","project":"Superalgos","tradingBots":[{"type":"Trading Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Trading","config":"{\n \"codeName\": \"Trading\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Trading-Process\"\n }\n }","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Trading Engine","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Episode","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Episode Counters","project":"Superalgos","id":"ec8d74ba-a4ad-417a-b479-6bae95b8a1fe","savedPayload":{"position":{"x":24910.97457254189,"y":18457.46644293786},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3ed03a02-381d-43fe-9faa-761728c53bd8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Counters","project":"Superalgos","id":"22b0af33-8c2f-4194-839b-affd18f298d5","savedPayload":{"position":{"x":24834.601232363748,"y":18490.07023931273},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15f5b150-f1cf-403c-8cb9-2c7c4e1db8e8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Statistics","project":"Superalgos","id":"23ab91ae-2e78-4993-bb69-855f69cef1ce","savedPayload":{"position":{"x":24753.53736157276,"y":18508.085329665024},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"fc9dc0f7-35e0-4548-bb91-f920825d694f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Statistics","project":"Superalgos","id":"d0a4515a-279d-4c27-8de2-168108861242","savedPayload":{"position":{"x":24670.543493063306,"y":18510.89823169951},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"91953362-8751-4440-a898-21245cd47c15"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","project":"Superalgos","id":"7fc80977-5b37-413e-8107-0a89a16e08b0","savedPayload":{"position":{"x":24588.445883487308,"y":18498.413155411115},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"17fb41f5-61b5-4433-9a10-950ff8216a7e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","project":"Superalgos","id":"a6888750-1043-420c-9253-633e1399c5e4","savedPayload":{"position":{"x":24510.040268473647,"y":18471.05526509864},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"bbc9467d-28bf-432b-9e49-582d1bcabfb9"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Balances","project":"Superalgos","id":"0ad114df-f076-4a86-8c62-4c4a146da73c","savedPayload":{"position":{"x":24437.996657204443,"y":18429.756200904503},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"acddff59-b51b-4b45-b58f-71d4077755ee"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Balances","project":"Superalgos","id":"04b51302-957d-4365-ad55-9f89d60e261c","savedPayload":{"position":{"x":24374.76840845468,"y":18375.922352927064},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFroLine truncated
|
||||
{"type":"Trading Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","project":"Superalgos","tradingBots":[{"type":"Trading Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Trading","config":"{\n \"codeName\": \"Trading\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Trading-Process\"\n }\n }","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Trading Engine","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Episode","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Episode Counters","project":"Superalgos","id":"ec8d74ba-a4ad-417a-b479-6bae95b8a1fe","savedPayload":{"position":{"x":24910.97457254189,"y":18457.46644293786},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3ed03a02-381d-43fe-9faa-761728c53bd8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Counters","project":"Superalgos","id":"22b0af33-8c2f-4194-839b-affd18f298d5","savedPayload":{"position":{"x":24834.601232363748,"y":18490.07023931273},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15f5b150-f1cf-403c-8cb9-2c7c4e1db8e8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Statistics","project":"Superalgos","id":"23ab91ae-2e78-4993-bb69-855f69cef1ce","savedPayload":{"position":{"x":24753.53736157276,"y":18508.085329665024},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"fc9dc0f7-35e0-4548-bb91-f920825d694f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Statistics","project":"Superalgos","id":"d0a4515a-279d-4c27-8de2-168108861242","savedPayload":{"position":{"x":24670.543493063306,"y":18510.89823169951},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"91953362-8751-4440-a898-21245cd47c15"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","project":"Superalgos","id":"7fc80977-5b37-413e-8107-0a89a16e08b0","savedPayload":{"position":{"x":24588.445883487308,"y":18498.413155411115},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"17fb41f5-61b5-4433-9a10-950ff8216a7e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","project":"Superalgos","id":"a6888750-1043-420c-9253-633e1399c5e4","savedPayload":{"position":{"x":24510.040268473647,"y":18471.05526509864},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"bbc9467d-28bf-432b-9e49-582d1bcabfb9"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Balances","project":"Superalgos","id":"0ad114df-f076-4a86-8c62-4c4a146da73c","savedPayload":{"position":{"x":24437.996657204443,"y":18429.756200904503},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"acddff59-b51b-4b45-b58f-71d4077755ee"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Balances","project":"Superalgos","id":"04b51302-957d-4365-ad55-9f89d60e261c","savedPayload":{"position":{"x":24374.76840845468,"y":18375.922352927064},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFroLine truncated
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"topic": "TS LF Trading Bot Infos",
|
||||
"pageNumber": "1",
|
||||
"type": "TS LF Trading Bot Info - Candle And Cycle",
|
||||
"definition": {
|
||||
"text": "The LF Trading Bot is running over a set of candles. At Time Frames of 1 hour and above, it runs on a market file containing all the candles of all available history of the market. On a Time Frame of less than 1 hours on a set of candles of a given day. This Info shows the # of the candle in the set, and also the Cycle at which the LF was stanging at the moment of producing the Info Message.",
|
||||
"updated": 1611919712986
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "Candle And Cycle",
|
||||
"updated": 1611919730247
|
||||
}
|
||||
]
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"topic": "TS LF Trading Bot Infos",
|
||||
"pageNumber": "2",
|
||||
"type": "TS LF Trading Bot Info - Order Skipped",
|
||||
"definition": {
|
||||
"text": "The order that generated this Info Message was not considered to be opened because the Lock at the referenced order at the Trading Engine was found closed. ",
|
||||
"updated": 1611919981100
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The Lock is a mechanism to prevent an order to be opened while another instance of the same order definition is already running and occupaying it's place at the Trading Engine.",
|
||||
"updated": 1611920085962
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "Order Sikpped"
|
||||
}
|
||||
]
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"topic": "TS LF Trading Bot Infos",
|
||||
"pageNumber": "3",
|
||||
"type": "TS LF Trading Bot Info - Order Closed",
|
||||
"definition": {
|
||||
"text": "The order that triggered this Infor Message has been closed.",
|
||||
"updated": 1611920136713
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "Details of the Exit Type for that order can be seen below.",
|
||||
"updated": 1611920197722
|
||||
},
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "Context Info"
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Here are the context information preserved at the moment this Info Message was generated."
|
||||
},
|
||||
{
|
||||
"style": "Placeholder",
|
||||
"text": "contextInfo"
|
||||
}
|
||||
]
|
||||
}
|
||||
+94
-7
@@ -131,7 +131,16 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
*/
|
||||
if (tradingSystemOrder.config.spawnMultipleOrders !== true) {
|
||||
if (tradingEngineOrder.lock.value === 'Closed') {
|
||||
tradingSystem.infos.push(['Order ' + tradingSystemOrder.name + ' skipped because lock was closed.'])
|
||||
|
||||
let message = "Order Skipped"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
continue
|
||||
}
|
||||
}
|
||||
@@ -668,7 +677,20 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
|
||||
|
||||
await updateEndsWithCycle(tradingEngineOrder)
|
||||
tradingSystem.infos.push([tradingSystemOrder.id, 'checkExchangeEvents -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value])
|
||||
|
||||
let message = "Order Closed"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
contextInfo = {
|
||||
exitType: tradingEngineOrder.exitType.value
|
||||
}
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
|
||||
await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order)
|
||||
return
|
||||
@@ -682,7 +704,20 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
|
||||
|
||||
await updateEndsWithCycle(tradingEngineOrder)
|
||||
tradingSystem.infos.push([tradingSystemOrder.id, 'checkExchangeEvents -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value])
|
||||
|
||||
let message = "Order Closed"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
contextInfo = {
|
||||
exitType: tradingEngineOrder.exitType.value
|
||||
}
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
|
||||
await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order)
|
||||
await recalculateStageSize(tradingEngineStage, tradingEngineOrder)
|
||||
@@ -705,7 +740,20 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
|
||||
|
||||
await updateEndsWithCycle(tradingEngineOrder)
|
||||
tradingSystem.infos.push([tradingSystemOrder.id, 'checkExchangeEvents -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value])
|
||||
|
||||
let message = "Order Closed"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
contextInfo = {
|
||||
exitType: tradingEngineOrder.exitType.value
|
||||
}
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
|
||||
await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order)
|
||||
await recalculateStageSize(tradingEngineStage, tradingEngineOrder)
|
||||
@@ -763,7 +811,20 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
|
||||
|
||||
updateEndsWithCycle(tradingEngineOrder)
|
||||
tradingSystem.infos.push([tradingSystemOrder.id, 'percentageFilledSimulation -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value])
|
||||
|
||||
let message = "Order Closed"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
contextInfo = {
|
||||
exitType: tradingEngineOrder.exitType.value
|
||||
}
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
}
|
||||
|
||||
/* If the Stage is Closing and this order is still open, we need to cancel it now */
|
||||
@@ -982,7 +1043,20 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
|
||||
|
||||
updateEndsWithCycle(tradingEngineOrder)
|
||||
tradingSystem.infos.push([tradingSystemOrder.id, 'simulateCancelOrder -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value])
|
||||
|
||||
let message = "Order Closed"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
contextInfo = {
|
||||
exitType: tradingEngineOrder.exitType.value
|
||||
}
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
|
||||
recalculateStageSize(tradingEngineStage, tradingEngineOrder)
|
||||
}
|
||||
@@ -1051,7 +1125,20 @@ exports.newSuperalgosBotModulesTradingOrders = function (processIndex) {
|
||||
tradingEngine.current.episode.distanceToEvent.closeOrder.value = 1
|
||||
|
||||
await updateEndsWithCycle(tradingEngineOrder)
|
||||
tradingSystem.infos.push([tradingSystemOrder.id, 'exchangeCancelOrder -> Closing Order with Exit Type ' + tradingEngineOrder.exitType.value])
|
||||
|
||||
let message = "Order Closed"
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - ' + message,
|
||||
placeholder: {}
|
||||
}
|
||||
contextInfo = {
|
||||
exitType: tradingEngineOrder.exitType.value
|
||||
}
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
tradingSystem.addInfo([tradingSystemOrder.id, message, docs])
|
||||
|
||||
await syncWithExchange(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order)
|
||||
|
||||
|
||||
+10
-3
@@ -207,7 +207,14 @@ exports.newSuperalgosBotModulesTradingSimulation = function (processIndex) {
|
||||
let infoMessage = 'Processing candle # ' + tradingEngine.current.episode.candle.index.value + ' @ the ' + tradingEngine.current.episode.cycle.value + ' cycle.'
|
||||
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
|
||||
'[INFO] runSimulation -> loop -> ' + infoMessage)
|
||||
tradingSystem.infos.push([tradingSystem.id, infoMessage])
|
||||
|
||||
let docs = {
|
||||
project: 'Superalgos',
|
||||
category: 'Topic',
|
||||
type: 'TS LF Trading Bot Info - Candle And Cycle',
|
||||
placeholder: {}
|
||||
}
|
||||
tradingSystem.addInfo([tradingSystem.id, infoMessage, docs])
|
||||
|
||||
await tradingSystemModuleObject.run()
|
||||
}
|
||||
@@ -564,7 +571,7 @@ exports.newSuperalgosBotModulesTradingSimulation = function (processIndex) {
|
||||
}
|
||||
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
|
||||
tradingSystem.addError([tradingSystem.id, errorMessage, docs])
|
||||
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
|
||||
'[WARN] runSimulation -> checkMinimunAndMaximunBalance -> ' + errorMessage)
|
||||
@@ -616,7 +623,7 @@ exports.newSuperalgosBotModulesTradingSimulation = function (processIndex) {
|
||||
}
|
||||
|
||||
TS.projects.superalgos.utilities.docsFunctions.buildPlaceholder(docs, undefined, undefined, undefined, undefined, undefined, contextInfo)
|
||||
|
||||
|
||||
tradingSystem.addError([tradingSystem.id, errorMessage, docs])
|
||||
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
|
||||
'[WARN] runSimulation -> checkMinimunAndMaximunBalance -> ' + errorMessage)
|
||||
|
||||
+18
-6
@@ -62,7 +62,7 @@ exports.newSuperalgosBotModulesTradingSystem = function (processIndex) {
|
||||
evalNode(startingNode, 'Formulas', descendentOfNodeType)
|
||||
}
|
||||
|
||||
tradingSystem.addError = function (errorInfoArray) {
|
||||
tradingSystem.addError = function (errorDataArray) {
|
||||
/*
|
||||
This function adds to the array of error info a rate based on the amount of items
|
||||
already at the errors array. This rate will later help plotting the error at the
|
||||
@@ -70,11 +70,11 @@ exports.newSuperalgosBotModulesTradingSystem = function (processIndex) {
|
||||
*/
|
||||
let baseRate = tradingEngine.current.episode.candle.close.value
|
||||
let rate = baseRate - baseRate * ((tradingSystem.errors.length + 1) + 0) / 100
|
||||
errorInfoArray.push(rate)
|
||||
tradingSystem.errors.push(errorInfoArray)
|
||||
errorDataArray.push(rate)
|
||||
tradingSystem.errors.push(errorDataArray)
|
||||
}
|
||||
|
||||
tradingSystem.addWarning = function (warningInfoArray) {
|
||||
tradingSystem.addWarning = function (warningDataArray) {
|
||||
/*
|
||||
This function adds to the array of warning info a rate based on the amount of items
|
||||
already at the warning array. This rate will later help plotting the warning at the
|
||||
@@ -82,8 +82,20 @@ exports.newSuperalgosBotModulesTradingSystem = function (processIndex) {
|
||||
*/
|
||||
let baseRate = tradingEngine.current.episode.candle.close.value
|
||||
let rate = baseRate + baseRate * ((tradingSystem.warnings.length + 1) + 0) / 100
|
||||
warningInfoArray.push(rate)
|
||||
tradingSystem.warnings.push(warningInfoArray)
|
||||
warningDataArray.push(rate)
|
||||
tradingSystem.warnings.push(warningDataArray)
|
||||
}
|
||||
|
||||
tradingSystem.addInfo = function (infoDataArray) {
|
||||
/*
|
||||
This function adds to the array of warning info a rate based on the amount of items
|
||||
already at the warning array. This rate will later help plotting the warning at the
|
||||
charts.
|
||||
*/
|
||||
let baseRate = tradingEngine.current.episode.candle.close.value
|
||||
let rate = baseRate + baseRate * ((tradingSystem.infos.length + 1) + 0.5) / 100
|
||||
infoDataArray.push(rate)
|
||||
tradingSystem.infos.push(infoDataArray)
|
||||
}
|
||||
|
||||
function isItInside(elementWithTimestamp, elementWithBeginEnd) {
|
||||
|
||||
@@ -21,26 +21,75 @@ function newNodesInfos() {
|
||||
|
||||
function onRecordChange(currentRecord) {
|
||||
if (currentRecord === undefined) { return }
|
||||
let array = currentRecord.infos
|
||||
if (array === undefined) { return }
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
let arrayItem = array[i]
|
||||
if (currentRecord.rateIndex === undefined) {
|
||||
/*
|
||||
The user is not pointing to any rate in particular, so we are
|
||||
going to report all infos to the nodes involved.
|
||||
*/
|
||||
let array = currentRecord.infos
|
||||
if (array === undefined) { return }
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
let arrayItem = array[i]
|
||||
let nodeId = arrayItem[0]
|
||||
let infoMessage = arrayItem[1]
|
||||
let docs = arrayItem[2]
|
||||
applyValue(nodeId, infoMessage, docs)
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
The user is pointing to a particular rate, so we are
|
||||
going to report only that info and we will open the docs
|
||||
to show the info's page.
|
||||
*/
|
||||
let array = currentRecord.infos
|
||||
if (array === undefined) { return }
|
||||
let arrayItem = array[currentRecord.rateIndex]
|
||||
|
||||
let nodeId = arrayItem[0]
|
||||
let value = arrayItem[1]
|
||||
applyValue(nodeId, value)
|
||||
let infoMessage = arrayItem[1]
|
||||
let docs = arrayItem[2]
|
||||
applyValue(nodeId, infoMessage, docs)
|
||||
|
||||
if (UI.projects.superalgos.spaces.docsSpace.sidePanelTab.isOpen === true) {
|
||||
if (
|
||||
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project !== docs.project ||
|
||||
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category !== docs.category ||
|
||||
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type !== docs.type ||
|
||||
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.nodeId !== nodeId
|
||||
) {
|
||||
UI.projects.superalgos.spaces.docsSpace.navigateTo(
|
||||
docs.project,
|
||||
docs.category,
|
||||
docs.type,
|
||||
docs.anchor,
|
||||
nodeId,
|
||||
docs.placeholder
|
||||
)
|
||||
}
|
||||
|
||||
} else {
|
||||
UI.projects.superalgos.spaces.docsSpace.openSpaceAreaAndNavigateTo(
|
||||
docs.project,
|
||||
docs.category,
|
||||
docs.type,
|
||||
docs.anchor,
|
||||
nodeId,
|
||||
docs.placeholder
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function applyValue(nodeId, value) {
|
||||
async function applyValue(nodeId, infoMessage, docs) {
|
||||
if (UI.projects.superalgos.spaces.chartingSpace.visible !== true) { return }
|
||||
let node = await UI.projects.superalgos.spaces.designSpace.workspace.getNodeById(nodeId)
|
||||
if (node === undefined) { return }
|
||||
if (node.payload === undefined) { return }
|
||||
if (node.payload.uiObject === undefined) { return }
|
||||
if (value === '') {
|
||||
if (infoMessage === '') {
|
||||
node.payload.uiObject.resetInfoMessage()
|
||||
} else {
|
||||
node.payload.uiObject.setInfoMessage(value, 3)
|
||||
node.payload.uiObject.setInfoMessage(infoMessage, 3, docs)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user