Merge pull request #544 from Luis-Fernando-Molina/develop

Contribution: Learning Bot Layers checked.
This commit is contained in:
Luis Fernando Molina authored and GitHub committed 2021-02-09 10:44:14 +01:00
commit dc1024d1e6
5 files changed
+109 -34

No files matched your search

@@ -1 +1 @@
{"type":"Learning Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","project":"Superalgos","learningBots":[{"type":"Learning Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Learning","config":"{\n \"codeName\": \"Learning\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Learning-Process\"\n }\n }","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Learning Engine","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Trading Episode","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Trading Episode Counters","project":"Superalgos","id":"c0de6b69-60e2-4574-890a-35743f75c569","savedPayload":{"position":{"x":11096.193715496249,"y":18419.16327303778},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ac1bc967-9c9f-47f0-8815-535abd7cb777"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Trading Episode Counters","project":"Superalgos","id":"da23a8ff-8b3d-4caa-a27c-f59352911212","savedPayload":{"position":{"x":10972.16471539031,"y":18451.134397804504},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"6881069e-a4d1-4b41-892f-557d2031adea"}}},{"type":"Output Dataset","name":"Multi-Period-Market Learning Episode Statistics","project":"Superalgos","id":"dfdcb71e-c123-429e-bc2d-cf33963378d6","savedPayload":{"position":{"x":10844.152454538604,"y":18446.867460054396},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"8408c316-e04d-4b0d-8c81-1bf3b4126894"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Learning Episode Statistics","project":"Superalgos","id":"fa9e000d-199c-4ed4-b10f-6c586bfc2fa5","savedPayload":{"position":{"x":10722.527724997106,"y":18406.708141707517},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"553a0b49-2a61-41c4-ac95-f762051c1cab"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","project":"Superalgos","id":"a9a7b1fe-ecff-4d08-bd3b-297e4263c703","savedPayload":{"position":{"x":10617.14383902315,"y":18333.909911899664},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"a08a3974-75ac-4a2b-bc09-f80547a61381"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","project":"Superalgos","id":"d80bea92-bca6-4826-aa32-34bc7c13f952","savedPayload":{"position":{"x":10536.538372316247,"y":18234.370450262126},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"46221186-fff7-4333-a087-a32a649e9ce8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Distance To Learning Event","project":"Superalgos","id":"0b8ef0c4-c7a9-48cf-9f9b-e48d32f5ed27","savedPayload":{"position":{"x":10487.241500409818,"y":18116.153851992807},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"0d746a41-6726-41fd-9312-862b6835b8ba"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Distance To Learning Event","project":"Superalgos","id":"a8951035-4bf1-4d0d-8666-879b2c481b6d","savedPayload":{"position":{"x":10473.246962685937,"y":17988.837322822303},"targetPosition":{"x":109Line truncated
{"type":"Learning Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","project":"Superalgos","learningBots":[{"type":"Learning Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Learning","config":"{\n \"codeName\": \"Learning\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Learning-Process\"\n }\n }","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Learning Engine","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Learning Episode","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Learning Episode Counters","project":"Superalgos","id":"c0de6b69-60e2-4574-890a-35743f75c569","savedPayload":{"position":{"x":11096.193715496249,"y":18419.16327303778},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"ac1bc967-9c9f-47f0-8815-535abd7cb777"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Learning Episode Counters","project":"Superalgos","id":"da23a8ff-8b3d-4caa-a27c-f59352911212","savedPayload":{"position":{"x":10972.16471539031,"y":18451.134397804504},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"6881069e-a4d1-4b41-892f-557d2031adea"}}},{"type":"Output Dataset","name":"Multi-Period-Market Learning Episode Statistics","project":"Superalgos","id":"dfdcb71e-c123-429e-bc2d-cf33963378d6","savedPayload":{"position":{"x":10844.152454538604,"y":18446.867460054396},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"8408c316-e04d-4b0d-8c81-1bf3b4126894"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Learning Episode Statistics","project":"Superalgos","id":"fa9e000d-199c-4ed4-b10f-6c586bfc2fa5","savedPayload":{"position":{"x":10722.527724997106,"y":18406.708141707517},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"553a0b49-2a61-41c4-ac95-f762051c1cab"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","project":"Superalgos","id":"a9a7b1fe-ecff-4d08-bd3b-297e4263c703","savedPayload":{"position":{"x":10617.14383902315,"y":18333.909911899664},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"a08a3974-75ac-4a2b-bc09-f80547a61381"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","project":"Superalgos","id":"d80bea92-bca6-4826-aa32-34bc7c13f952","savedPayload":{"position":{"x":10536.538372316247,"y":18234.370450262126},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"46221186-fff7-4333-a087-a32a649e9ce8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Distance To Learning Event","project":"Superalgos","id":"0b8ef0c4-c7a9-48cf-9f9b-e48d32f5ed27","savedPayload":{"position":{"x":10487.241500409818,"y":18116.153851992807},"targetPosition":{"x":10922.997186924276,"y":18003.828513487584},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"0d746a41-6726-41fd-9312-862b6835b8ba"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Distance To Learning Event","project":"Superalgos","id":"a8951035-4bf1-4d0d-8666-879b2c481b6d","savedPayload":{"position":{"x":10473.246962685937,"y":17988.837322822303},"targetPosition":{"x":Line truncated
@@ -246,7 +246,7 @@
}
} else {
/* Check that we received valid dates */
if (TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.type === 'Backtesting Session') {
if (TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.type === 'Back Learning Session') {
if (isNaN(new Date(TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.learningParameters.timeRange.config.initialDatetime)).valueOf()) {
let errorMessage = "Invalid Initial Datetime Property Value"
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_INSTANCE_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
@@ -312,7 +312,7 @@
*/
/* Initial Datetime */
if (TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.type === 'Backtesting Session') {
if (TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.type === 'Back Learning Session') {
if (TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.learningParameters.timeRange.config.initialDatetime === undefined) {
TS.projects.superalgos.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.learningParameters.timeRange.config.initialDatetime = initialDefault
} else {
@@ -2,7 +2,7 @@ function newPlottersManager() {
const MODULE_NAME = 'Plotters Manager'
const ERROR_LOG = true
const logger = newWebDebugLog()
let timeFrame = INITIAL_TIME_PERIOD
let datetime = NEW_SESSION_INITIAL_DATE
@@ -15,7 +15,7 @@ function newPlottersManager() {
setDatetime: setDatetime,
setTimeFrame: setTimeFrame,
setCoordinateSystem: setCoordinateSystem,
physics: physics,
physics: physics,
draw: draw,
getContainer: getContainer,
initialize: initialize,
@@ -138,8 +138,8 @@ function newPlottersManager() {
let exchange = layer.exchange
let plotterModule = layer.plotterModule
let session
let tradingSystem
let tradingEngine
let tradingOrLearningSystem
let tradingOrLearningEngine
/*
A layer can be referencing a Data Product in 3 different branches of the Network hiriatchy.
@@ -158,10 +158,16 @@ function newPlottersManager() {
}
/* From the session we might be able to reach the Trading System or the Trading Engine */
if (session.tradingSystemReference !== undefined) {
tradingSystem = session.tradingSystemReference.referenceParent
tradingOrLearningSystem = session.tradingSystemReference.referenceParent
}
if (session.tradingEngineReference !== undefined) {
tradingEngine = session.tradingEngineReference.referenceParent
tradingOrLearningEngine = session.tradingEngineReference.referenceParent
}
if (session.learningSystemReference !== undefined) {
tradingOrLearningSystem = session.learningSystemReference.referenceParent
}
if (session.learningEngineReference !== undefined) {
tradingOrLearningEngine = session.learningEngineReference.referenceParent
}
}
@@ -244,10 +250,16 @@ function newPlottersManager() {
connector.nodesHighlights = newNodesHighlights()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesHighlights.initialize(tradingSystem)
connector.nodesHighlights.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesHighlights.initialize(tradingEngine)
connector.nodesHighlights.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesHighlights.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesHighlights.initialize(tradingOrLearningEngine)
break
}
connector.nodesHighlights.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesHighlights.onRecordChange)
@@ -256,10 +268,16 @@ function newPlottersManager() {
connector.nodesValues = newNodesValues()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesValues.initialize(tradingSystem)
connector.nodesValues.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesValues.initialize(tradingEngine)
connector.nodesValues.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesValues.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesValues.initialize(tradingOrLearningEngine)
break
}
connector.nodesValues.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesValues.onRecordChange)
@@ -268,10 +286,16 @@ function newPlottersManager() {
connector.nodesErrors = newNodesErrors()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesErrors.initialize(tradingSystem)
connector.nodesErrors.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesErrors.initialize(tradingEngine)
connector.nodesErrors.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesErrors.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesErrors.initialize(tradingOrLearningEngine)
break
}
connector.nodesErrors.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesErrors.onRecordChange)
@@ -280,10 +304,16 @@ function newPlottersManager() {
connector.nodesWarnings = newNodesWarnings()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesWarnings.initialize(tradingSystem)
connector.nodesWarnings.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesWarnings.initialize(tradingEngine)
connector.nodesWarnings.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesWarnings.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesWarnings.initialize(tradingOrLearningEngine)
break
}
connector.nodesWarnings.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesWarnings.onRecordChange)
@@ -292,10 +322,16 @@ function newPlottersManager() {
connector.nodesInfos = newNodesInfos()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesInfos.initialize(tradingSystem)
connector.nodesInfos.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesInfos.initialize(tradingEngine)
connector.nodesInfos.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesInfos.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesInfos.initialize(tradingOrLearningEngine)
break
}
connector.nodesInfos.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesInfos.onRecordChange)
@@ -304,10 +340,16 @@ function newPlottersManager() {
connector.nodesRunning = newNodesRunning()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesRunning.initialize(tradingSystem)
connector.nodesRunning.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesRunning.initialize(tradingEngine)
connector.nodesRunning.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesRunning.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesRunning.initialize(tradingOrLearningEngine)
break
}
connector.nodesRunning.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesRunning.onRecordChange)
@@ -316,10 +358,16 @@ function newPlottersManager() {
connector.nodesStatus = newNodesStatus()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesStatus.initialize(tradingSystem)
connector.nodesStatus.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesStatus.initialize(tradingEngine)
connector.nodesStatus.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesStatus.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesStatus.initialize(tradingOrLearningEngine)
break
}
connector.nodesStatus.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesStatus.onRecordChange)
@@ -328,10 +376,16 @@ function newPlottersManager() {
connector.nodesProgress = newNodesProgress()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesProgress.initialize(tradingSystem)
connector.nodesProgress.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesProgress.initialize(tradingEngine)
connector.nodesProgress.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesProgress.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesProgress.initialize(tradingOrLearningEngine)
break
}
connector.nodesProgress.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesProgress.onRecordChange)
@@ -340,10 +394,16 @@ function newPlottersManager() {
connector.nodesAnnounements = newNodesAnnouncements()
switch (plotterModule.config.connectTo) {
case 'Trading System':
connector.nodesAnnounements.initialize(tradingSystem)
connector.nodesAnnounements.initialize(tradingOrLearningSystem)
break
case 'Trading Engine':
connector.nodesAnnounements.initialize(tradingEngine)
connector.nodesAnnounements.initialize(tradingOrLearningEngine)
break
case 'Learning System':
connector.nodesAnnounements.initialize(tradingOrLearningSystem)
break
case 'Learning Engine':
connector.nodesAnnounements.initialize(tradingOrLearningEngine)
break
}
connector.nodesAnnounements.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.nodesAnnounements.onRecordChange)
@@ -354,7 +414,7 @@ function newPlottersManager() {
*/
if (plotterModule.recordValues !== undefined) {
connector.recordValues = newRecordValues()
connector.recordValues.initialize(tradingSystem, tradingEngine, productDefinition)
connector.recordValues.initialize(tradingOrLearningSystem, tradingOrLearningEngine, productDefinition)
connector.recordValues.onRecordChangeEventsSubscriptionId = connector.plotter.container.eventHandler.listenToEvent('Current Record Changed', connector.recordValues.onRecordChange)
}
}
@@ -493,7 +553,7 @@ function newPlottersManager() {
function physics() {
if (thisObject.connectors === undefined) { return } // We need to wait
for (let i = 0; i < thisObject.connectors.length; i++) {
for (let i = 0; i < thisObject.connectors.length; i++) {
let connector = thisObject.connectors[thisObject.connectors.length - i - 1]
if (connector.plotter.physics !== undefined) {
connector.plotter.physics()
@@ -1,7 +1,7 @@
function newRecordValues() {
const MODULE_NAME = 'Record Values'
const logger = newWebDebugLog()
let thisObject = {
onRecordChange: onRecordChange,
@@ -11,6 +11,8 @@ function newRecordValues() {
let tradingSystem
let tradingEngine
let learningSystem
let learningEngine
let productDefinition
let propertyTargetNodeMap = new Map()
return thisObject
@@ -18,13 +20,25 @@ function newRecordValues() {
function finalize() {
tradingSystem = undefined
tradingEngine = undefined
learningSystem = undefined
learningEngine = undefined
productDefinition = undefined
propertyTargetNodeMap = undefined
}
function initialize(pTradingSystem, pTradingEngine, pProductDefinition) {
tradingSystem = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsById(pTradingSystem.id)
tradingEngine = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsById(pTradingEngine.id)
function initialize(pTradingOrLearningSystem, pTradingOrLearningEngine, pProductDefinition) {
if (pTradingOrLearningSystem.type === 'Trading System') {
tradingSystem = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsById(pTradingOrLearningSystem.id)
}
if (pTradingOrLearningSystem.type === 'Learning System') {
learningSystem = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsById(pTradingOrLearningSystem.id)
}
if (pTradingOrLearningEngine.type === 'Trading Engine') {
tradingEngine = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsById(pTradingOrLearningEngine.id)
}
if (pTradingOrLearningEngine.type === 'Learning Engine') {
learningEngine = UI.projects.superalgos.spaces.designSpace.workspace.getHierarchyHeadsById(pTradingOrLearningEngine.id)
}
productDefinition = pProductDefinition
/*
@@ -67,7 +81,7 @@ function newRecordValues() {
let propertyRoot
try {
propertyRoot = eval(property.config.nodePath)
} catch(err) {
} catch (err) {
console.log('Definition Error at Product ' + productDefinition.name)
console.log('productDefinition.config = ' + JSON.stringify(productDefinition.config))
console.log('Definition Error at Property ' + property.name)
@@ -171,6 +171,7 @@ function newLayer() {
'Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->' +
'Back Learning Session->Live Learning Session->' +
'Trading System Reference->Trading Engine Reference->Trading System->Trading Engine->' +
'Learning System Reference->Learning Engine Reference->Learning System->Learning Engine->' +
'Market->Market Base Asset->Asset->' +
'Market Quoted Asset->Asset->' +
'Exchange Markets->Crypto Exchange->' +