Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop

This commit is contained in:
DougJCook committed 2021-02-25 07:46:12 -05:00
commit 192e51fa4b
18 files changed
+470 -117

No files matched your search

@@ -1 +1 @@
{"type":"Learning Engine","name":"Low-Frequency","project":"Superalgos","learningCurrent":{"type":"Learning Current","name":"New Learning Current","project":"Superalgos","learningEpisode":{"type":"Learning Episode","name":"New Learning Episode","project":"Superalgos","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"2cc4ea2e-0c49-4dc4-be14-5c37dba3d4a3","savedPayload":{"position":{"x":11579.353376181454,"y":11483.233023771927},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","project":"Superalgos","id":"5e87e4cf-d3cf-4ca3-90d0-bcc215ff32df","savedPayload":{"position":{"x":11553.745789630078,"y":11567.649923428959},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"7073b390-c791-428b-b75d-11d7bef076ee","savedPayload":{"position":{"x":11512.161325536144,"y":11645.44898372349},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"f5dc8eea-94d7-41d7-9c44-3b044fa5cbb7","savedPayload":{"position":{"x":11456.198051533946,"y":11713.640430398615},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"f36a352e-9711-490f-9020-84bf3731f93c","savedPayload":{"position":{"x":11388.006604858821,"y":11769.603704400815},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"0cd1e3ea-f314-4777-9988-bbde66dd2688","savedPayload":{"position":{"x":11310.207544564291,"y":11811.188168494748},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","project":"Superalgos","id":"1961b061-f041-494f-8c47-004c672c23f3","savedPayload":{"position":{"x":11225.790644907258,"y":11836.795755046123},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","project":"Superalgos","id":"9ffc4653-3d13-4036-b8aa-98e34ea6e497","savedPayload":{"position":{"x":11138,"y":11845.442378864669},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"headOfTheMarket":{"type":"Head Of The Market","name":"New Head Of The Market","config":"{\n\"initialValue\": false\n}","project":"Superalgos","id":"dc3294b4-3754-4154-808a-6531410f6378","savedPayload":{"position":{"x":11050.209355092742,"y":11836.795755046123},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"processDate":{"type":"Process Date","name":"New Process Date","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"a009dbfb-9fce-4787-9461-dc63cb0cdf03","savedPayload":{"position":{"x":10965.79245543571,"y":11811.188168494748},"targetPosition":{"x":11138,"y":11395.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"learningEpisodeCounters":{"type":"Learning Episode Counters","name":"New Learning Episode Counters","project":"Superalgos","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"74d652d9-7439-4a8f-a66e-588f1cb24686","savedPayload":{"position":{"x":10975.784040048437,"y":12210.957080582268},"targetPositLine truncated
{"type":"Learning Engine","name":"Low-Frequency","project":"Superalgos","learningCurrent":{"type":"Learning Current","name":"New Learning Current","project":"Superalgos","learningEpisode":{"type":"Learning Episode","name":"New Learning Episode","project":"Superalgos","serialNumber":{"type":"Serial Number","name":"New Serial Number","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"2cc4ea2e-0c49-4dc4-be14-5c37dba3d4a3","savedPayload":{"position":{"x":11825.790644907258,"y":10354.089002683215},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"identifier":{"type":"Identifier","name":"New Identifier","config":"{\n\"initialValue\": \"\"\n}","project":"Superalgos","id":"5e87e4cf-d3cf-4ca3-90d0-bcc215ff32df","savedPayload":{"position":{"x":11910.207544564291,"y":10379.69658923459},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"begin":{"type":"Begin","name":"New Begin","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"7073b390-c791-428b-b75d-11d7bef076ee","savedPayload":{"position":{"x":11988.006604858821,"y":10421.281053328523},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"end":{"type":"End","name":"New End","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"f5dc8eea-94d7-41d7-9c44-3b044fa5cbb7","savedPayload":{"position":{"x":12056.198051533946,"y":10477.244327330722},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"beginRate":{"type":"Begin Rate","name":"New Begin Rate","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"f36a352e-9711-490f-9020-84bf3731f93c","savedPayload":{"position":{"x":12112.161325536144,"y":10545.435774005848},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"endRate":{"type":"End Rate","name":"New End Rate","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"0cd1e3ea-f314-4777-9988-bbde66dd2688","savedPayload":{"position":{"x":12153.745789630078,"y":10623.23483430038},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"status":{"type":"Status","name":"New Status","config":"{\n\"initialValue\": \"Not Open\"\n}","project":"Superalgos","id":"1961b061-f041-494f-8c47-004c672c23f3","savedPayload":{"position":{"x":12179.353376181454,"y":10707.651733957411},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"exitType":{"type":"Exit Type","name":"New Exit Type","config":"{\n\"initialValue\": \"No Exit\"\n}","project":"Superalgos","id":"9ffc4653-3d13-4036-b8aa-98e34ea6e497","savedPayload":{"position":{"x":12188,"y":10795.442378864669},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"headOfTheMarket":{"type":"Head Of The Market","name":"New Head Of The Market","config":"{\n\"initialValue\": false\n}","project":"Superalgos","id":"dc3294b4-3754-4154-808a-6531410f6378","savedPayload":{"position":{"x":12179.353376181454,"y":10883.233023771927},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"processDate":{"type":"Process Date","name":"New Process Date","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"a009dbfb-9fce-4787-9461-dc63cb0cdf03","savedPayload":{"position":{"x":12153.745789630078,"y":10967.649923428959},"targetPosition":{"x":11738,"y":10795.442378864669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":4,"arrangementStyle":0},"uiObject":{}}},"learningEpisodeCounters":{"type":"Learning Episode Counters","name":"New Learning Episode Counters","project":"Superalgos","periods":{"type":"Periods","name":"New Periods","config":"{\n\"initialValue\": 0\n}","project":"Superalgos","id":"74d652d9-7439-4a8f-a66e-588f1cb24686","savedPayload":{"position":{"x":10975.784040048437,"y":12210.957080582268},"targetPositLine truncated
@@ -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":"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
{"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":10770.578330127608,"y":18237.318563914418},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10647.18050284652,"y":18202.991870096994},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10538.452101828116,"y":18135.29046318318},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10453.201655490207,"y":18039.69910852537},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10398.335647991167,"y":17923.962049174253},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10378.298996957856,"y":17797.455613363665},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10394.71495269444,"y":17670.42860016024},"targetPosition":{"x":10828.2531163121,"y":17791.02984678326},"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":10446.25359209659,"y":17553.171982714983},"targetPosition":{"x":10828.2531163121,"y":177Line truncated
+182 -3
View File
@@ -3039,9 +3039,188 @@
"type": "node",
"childType": "Learning Current",
"autoAdd": true
},
{
"name": "predictions",
"type": "node",
"childType": "Predictions",
"autoAdd": true
}
]
},
{
"type": "Predictions",
"menuItems": [
{
"action": "Add UI Object",
"label": "Add Prediction",
"relatedUiObject": "Prediction",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Learning Engine->"
},
"propertyNameAtParent": "predictions",
"childrenNodesProperties": [
{
"name": "predictions",
"type": "array",
"childType": "Prediction",
"autoAdd": true
}
],
"icon": "bitcoin"
},
{
"type": "Prediction",
"menuItems": [
{
"action": "Configure",
"label": "Configure",
"iconPathOn": "configuration",
"iconPathOff": "configuration",
"actionFunction": "uiObject.configEditor.activate"
},
{
"action": "Add Missing Children",
"label": "Add Missing Children",
"relatedUiObject": "Learning Engine",
"actionFunction": "payload.executeAction"
},
{
"action": "Copy Node Path",
"label": "Copy Node Path",
"iconPathOn": "copy-path",
"iconPathOff": "copy-path",
"actionFunction": "payload.executeAction"
},
{
"action": "Copy Node Value",
"label": "Copy Node Value",
"iconPathOn": "copy-value",
"iconPathOff": "copy-value",
"actionFunction": "payload.executeAction"
},
{
"action": "Copy Node Type",
"label": "Copy Node Type",
"iconPathOn": "copy-type",
"iconPathOff": "copy-type",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"editors": {
"config": true
},
"initialValues": {
"config": "{\n\"initialValue\": 0\n}"
},
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Predictions->"
},
"propertyNameAtParent": "predictions",
"childrenNodesProperties": [
{
"name": "begin",
"type": "node",
"childType": "Begin",
"autoAdd": true
},
{
"name": "end",
"type": "node",
"childType": "End",
"autoAdd": true
},
{
"name": "predictionValue",
"type": "node",
"childType": "Prediction Value",
"autoAdd": true
}
],
"icon": "bitcoin"
},
{
"type": "Prediction Value",
"menuItems": [
{
"action": "Configure",
"label": "Configure",
"iconPathOn": "configuration",
"iconPathOff": "configuration",
"actionFunction": "uiObject.configEditor.activate"
},
{
"action": "Copy Node Path",
"label": "Copy Node Path",
"iconPathOn": "copy-path",
"iconPathOff": "copy-path",
"actionFunction": "payload.executeAction"
},
{
"action": "Copy Node Value",
"label": "Copy Node Value",
"iconPathOn": "copy-value",
"iconPathOff": "copy-value",
"actionFunction": "payload.executeAction"
},
{
"action": "Copy Node Type",
"label": "Copy Node Type",
"iconPathOn": "copy-type",
"iconPathOff": "copy-type",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"editors": {
"config": true
},
"initialValues": {
"config": "{\n\"initialValue\": 0\n}"
},
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Prediction->"
},
"propertyNameAtParent": "predictionValue",
"childrenNodesProperties": [
],
"icon": "bitcoin"
},
{
"type": "Dynamic Indicators",
"menuItems": [
@@ -7794,7 +7973,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->"
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->Prediction->"
},
"propertyNameAtParent": "begin"
},
@@ -7848,7 +8027,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->"
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->Prediction->"
},
"propertyNameAtParent": "end"
},
@@ -10430,7 +10609,7 @@
}
],
"initialValues": {
"config": "{ \n\"codeName\": \"Time Series Forcasting Tensor Flow JS\"\n}"
"config": "{ \n\"backLearningPredictingRatio\": 0.8\n}"
},
"addLeftIcons": true,
"editors": {
@@ -1,7 +1,8 @@
{
"type": "List of Plugin Workspaces and Tutorials",
"definition": {
"text": "Write here the summary / definition of this Concept."
"text": "Tutorials exists withing specific workspaces. This is a list of the workspaces shipping with Superalgos and the tutorials each of the feature.",
"updated": 1613848190790
},
"paragraphs": [
{
@@ -14,8 +14,8 @@
},
{
"style": "Json",
"text": "docs.add [Node|Concept|Book] from Project: Docs Page Name",
"updated": 1613766020535
"text": "docs.add [Node|Concept|Book] to Project: Docs Page Name",
"updated": 1614076270512
},
{
"style": "Subtitle",
@@ -24,18 +24,18 @@
},
{
"style": "Json",
"text": "docs.add Node from Superalgos: Task",
"updated": 1609152405379
"text": "docs.add Node to Superalgos: Task",
"updated": 1614076278432
},
{
"style": "Json",
"text": "docs.add Concept from Superalgos: References",
"updated": 1613766054009
"text": "docs.add Concept to Superalgos: References",
"updated": 1614076283283
},
{
"style": "Json",
"text": "docs.add Book from Superalgos: User Manual",
"updated": 1613766091949
"text": "docs.add Book to Superalgos: User Manual",
"updated": 1614076289103
},
{
"style": "Title",
@@ -44,8 +44,8 @@
},
{
"style": "Json",
"text": "docs.add [Topic|Tutorial|Review] from Project: Docs [Topic|Tutorial|Review] Name->Docs Page Name->Docs Page Number",
"updated": 1613766367064
"text": "docs.add [Topic|Tutorial|Review] to Project: Docs [Topic|Tutorial|Review] Name->Docs Page Name->Docs Page Number",
"updated": 1614076299626
},
{
"style": "Subtitle",
@@ -54,18 +54,18 @@
},
{
"style": "Json",
"text": "docs.add Topic from Superalgos: Docs Styles->Docs Text Style->1",
"updated": 1609152521245
"text": "docs.add Topic to Superalgos: Docs Styles->Docs Text Style->1",
"updated": 1614076312667
},
{
"style": "Json",
"text": "docs.add Tutorial from Superalgos: How to Build Indicatiors->Intro->1",
"updated": 1610707006603
"text": "docs.add Tutorial to Superalgos: How to Build Indicatiors->Intro->1",
"updated": 1614076317413
},
{
"style": "Json",
"text": "docs.add Review from Project: Superalgos Project Review->Awasome!->2",
"updated": 1610707101903
"text": "docs.add Review to Project: Superalgos Project Review->Awasome!->2",
"updated": 1614076323955
},
{
"style": "Title",
@@ -143,9 +143,6 @@ exports.newSuperalgosBotModulesLearningRecords = function (processIndex) {
the Root Node specifically for this property only.
*/
if (recordProperty.config.nodePath !== undefined) {
if (recordProperty.config.nodePath === "learningEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset") {
let a = learningEngine
}
try {
propertyRootNode = eval(recordProperty.config.nodePath)
} catch (err) {
@@ -291,9 +288,6 @@ exports.newSuperalgosBotModulesLearningRecords = function (processIndex) {
When we are not dealing with objects, we add every record to the existing file except
for the ones that are filtered out at the Product Definition.
*/
if (product.config.codeName === "Learning-System-Errors") {
let a = 1
}
if (product.config.propertyNameThatDefinesStatus !== undefined && product.config.propertyValueThatPreventsSavingObject !== undefined) {
for (let j = 0; j < product.record.properties.length; j++) {
let recordProperty = product.record.properties[j]
@@ -143,9 +143,6 @@ exports.newSuperalgosBotModulesTradingRecords = function (processIndex) {
the Root Node specifically for this property only.
*/
if (recordProperty.config.nodePath !== undefined) {
if (recordProperty.config.nodePath === "tradingEngine.exchangeOrders.marketBuyOrders.marketOrders[index].orderBaseAsset") {
let a = tradingEngine
}
try {
propertyRootNode = eval(recordProperty.config.nodePath)
} catch (err) {
@@ -291,9 +288,6 @@ exports.newSuperalgosBotModulesTradingRecords = function (processIndex) {
When we are not dealing with objects, we add every record to the existing file except
for the ones that are filtered out at the Product Definition.
*/
if (product.config.codeName === "Trading-System-Errors") {
let a = 1
}
if (product.config.propertyNameThatDefinesStatus !== undefined && product.config.propertyValueThatPreventsSavingObject !== undefined) {
for (let j = 0; j < product.record.properties.length; j++) {
let recordProperty = product.record.properties[j]
@@ -118,7 +118,8 @@ function newSuperalgosFunctionLibraryLearningSessionFunctions() {
'Begin->End->Exit Type->Status->Begin Rate->End Rate->Stage Base Asset->Stage Quoted Asset->Size Placed->Target Size->Size Filled->Fees Paid->Stage Defined In->' +
'Serial Number->Identifier->Begin->End->Begin Rate->End Rate->Strategy Name->Status->Exit Type->' +
'Balance->Begin Balance->End Balance->' +
'Index->Situation Name->Formula->Periods->'
'Index->Situation Name->Formula->Periods->' +
'Predictions->Prediction->Begin->End->Prediction Value->'
let learningEngine = UI.projects.superalgos.functionLibraries.protocolNode.getProtocolNode(node.learningEngineReference.payload.referenceParent, false, true, true, false, false, lightingPath)
@@ -10,6 +10,7 @@ function newRateScale() {
maxValue: undefined,
isVisible: true,
layersOn: undefined,
onKeyPressed: onKeyPressed,
onUpstreamScaleChanged: onUpstreamScaleChanged,
onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer,
physics: physics,
@@ -125,6 +126,25 @@ function newRateScale() {
readObjectState()
}
function onKeyPressed(event) {
if (event.code === "ArrowUp") {
event.delta = 1
onMouseWheel(event, false)
}
if (event.code === "ArrowDown") {
event.delta = -1
onMouseWheel(event, false)
}
if (event.code === "ArrowLeft") {
event.delta = 1
onMouseWheel(event, true)
}
if (event.code === "ArrowRight") {
event.delta = -1
onMouseWheel(event, true)
}
}
function onMouseOverSomeTimeMachineContainer(event) {
if (event.containerId === undefined) {
/* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */
@@ -154,7 +174,7 @@ function newRateScale() {
scaleDisplayTimer = 0
}
function onMouseWheel(event) {
function onMouseWheel(event, autoScale) {
if (IS_MAC) {
let sensitivity
if (event.delta < 0) {
@@ -196,7 +216,7 @@ function newRateScale() {
}
}
if (event.shiftKey === true) {
if (event.shiftKey === true || autoScale === true ) {
autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event)
return
}
@@ -8,6 +8,7 @@ function newTimeFrameScale() {
payload: undefined,
isVisible: true,
layersOn: undefined,
onKeyPressed: onKeyPressed,
adjustTimeFrame: adjustTimeFrame,
onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer,
draw: draw,
@@ -83,6 +84,17 @@ function newTimeFrameScale() {
onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver)
}
function onKeyPressed(event) {
if (event.code === "ArrowUp") {
event.delta = 1
onMouseWheel(event)
}
if (event.code === "ArrowDown") {
event.delta = -1
onMouseWheel(event)
}
}
function onMouseOverSomeTimeMachineContainer(event) {
if (event.containerId === undefined) {
/* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */
@@ -9,6 +9,7 @@ function newTimeScale() {
isVisible: true,
fromDate: undefined,
toDate: undefined,
onKeyPressed: onKeyPressed,
onMouseOverSomeTimeMachineContainer: onMouseOverSomeTimeMachineContainer,
physics: physics,
draw: draw,
@@ -81,6 +82,25 @@ function newTimeScale() {
readObjectState()
}
function onKeyPressed(event) {
if (event.code === "ArrowUp") {
event.delta = 1
onMouseWheel(event, true)
}
if (event.code === "ArrowDown") {
event.delta = -1
onMouseWheel(event, true)
}
if (event.code === "ArrowLeft") {
event.delta = 1
onMouseWheel(event, false)
}
if (event.code === "ArrowRight") {
event.delta = -1
onMouseWheel(event, false)
}
}
function onMouseOverSomeTimeMachineContainer(event) {
if (event.containerId === undefined) {
/* This happens when the mouse over was not at the instance of a certain scale, but anywhere else. */
@@ -105,7 +125,7 @@ function newTimeScale() {
isMouseOver = false
}
function onMouseWheel(event) {
function onMouseWheel(event, autoScale) {
if (IS_MAC) {
let sensitivity
if (event.delta < 0) {
@@ -147,7 +167,7 @@ function newTimeScale() {
}
}
if (event.shiftKey === true) {
if (event.shiftKey === true || autoScale === true ) {
autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event)
return
}
@@ -12,7 +12,7 @@ each one with it own timelineCharts, and each one positioned at an especific poi
function newTimeMachine() {
const MODULE_NAME = 'Time Machine'
const logger = newWebDebugLog()
let timeFrame = INITIAL_TIME_PERIOD
@@ -20,6 +20,7 @@ function newTimeMachine() {
container: undefined,
timeScale: undefined,
rateScale: undefined,
timeFrameScale: undefined,
payload: undefined,
edgeEditor: undefined,
onFocus: undefined,
@@ -171,7 +172,53 @@ function newTimeMachine() {
}
function onKeyPressed(event) {
thisObject.edgeEditor.onKeyPressed(event)
/*
We are going to pass this event downstream to see if it belogns to any of the
chart's scales or time machine's scales. If it does not belong to any
we will apply it to the edge editor.
*/
let eventTaken = false
let point = {
x: event.x,
y: event.y
}
let container
if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) {
container = thisObject.rateScale.getContainer(point)
if (container !== undefined) {
eventTaken = true
thisObject.rateScale.onKeyPressed(event)
}
}
if (thisObject.timeScale !== undefined && thisObject.timeScale.isVisible === true) {
container = thisObject.timeScale.getContainer(point)
if (container !== undefined) {
eventTaken = true
thisObject.timeScale.onKeyPressed(event)
}
}
if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) {
container = thisObject.timeFrameScale.getContainer(point)
if (container !== undefined) {
eventTaken = true
thisObject.timeFrameScale.onKeyPressed(event)
}
}
for (let i = 0; i < thisObject.timelineCharts.length; i++) {
container = thisObject.timelineCharts[i].getContainer(point)
if (container !== undefined) {
eventTaken = thisObject.timelineCharts[i].onKeyPressed(event)
}
}
if (eventTaken === false) {
thisObject.edgeEditor.onKeyPressed(event)
}
}
function onMouseOver(event) {
@@ -665,7 +712,7 @@ function newTimeMachine() {
if (description !== undefined) {
label = description
}
UI.projects.superalgos.utilities.drawPrint.printLabel(label, position.x + 20, undefined, undefined, position.y - 10, opacity, fontSize, undefined, 'Left')
UI.projects.superalgos.utilities.drawPrint.printLabel(label, position.x + 20, undefined, undefined, position.y - 10, opacity, fontSize, undefined, 'Left')
if (icon !== undefined) {
if (icon.canDrawIcon === true) {
@@ -2,7 +2,7 @@ function newTimelineChart() {
const MODULE_NAME = 'Timeline Chart'
let logger = newWebDebugLog()
let timeFrame = INITIAL_TIME_PERIOD
let datetime = NEW_SESSION_INITIAL_DATE
@@ -16,6 +16,7 @@ function newTimelineChart() {
layerManager: undefined,
plotterManager: undefined,
upstreamTimeFrame: undefined,
onKeyPressed: onKeyPressed,
setDatetime: setDatetime,
setTimeFrame: setTimeFrame,
physics: physics,
@@ -231,6 +232,37 @@ function newTimelineChart() {
}
}
function onKeyPressed(event) {
/*
We are going to pass this event to the scales and if they take it return true.
*/
let point = {
x: event.x,
y: event.y
}
let container
if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) {
container = thisObject.rateScale.getContainer(point)
if (container !== undefined) {
thisObject.rateScale.onKeyPressed(event)
return true
}
}
if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) {
container = thisObject.timeFrameScale.getContainer(point)
if (container !== undefined) {
thisObject.timeFrameScale.onKeyPressed(event)
return true
}
}
return false
}
function onScaleChanged(event) {
if (thisObject.rateScale !== undefined) {
thisObject.rateScale.onUpstreamScaleChanged(event)
@@ -292,8 +324,12 @@ function newTimelineChart() {
if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) {
container = thisObject.rateScale.getContainer(point, purpose)
if (container !== undefined) {
if (container.isForThisPurpose(purpose)) {
if (purpose === undefined) {
return container
} else {
if (container.isForThisPurpose(purpose)) {
return container
}
}
}
}
@@ -301,8 +337,12 @@ function newTimelineChart() {
if (thisObject.timeFrameScale !== undefined && thisObject.timeFrameScale.isVisible === true) {
container = thisObject.timeFrameScale.getContainer(point, purpose)
if (container !== undefined) {
if (container.isForThisPurpose(purpose)) {
if (purpose === undefined) {
return container
} else {
if (container.isForThisPurpose(purpose)) {
return container
}
}
}
}
@@ -20,6 +20,7 @@ function newFloatingLayer() {
let thisObject = {
isProximityPhysicsNeeded: false,
addFloatingObject: addFloatingObject,
removeFloatingObject: removeFloatingObject,
getFloatingObject: getFloatingObject,
@@ -145,27 +146,9 @@ function newFloatingLayer() {
}
function draw() {
drawInvisibleObjects()
drawVisibleObjects()
}
function drawInvisibleObjects() {
for (let i = 0; i < invisibleFloatingObjects.length; i++) {
let floatingObject = invisibleFloatingObjects[i]
floatingObject.drawBackground()
}
for (let i = 0; i < invisibleFloatingObjects.length; i++) {
let floatingObject = invisibleFloatingObjects[i]
floatingObject.drawMiddleground()
}
for (let i = 0; i < invisibleFloatingObjects.length; i++) {
let floatingObject = invisibleFloatingObjects[invisibleFloatingObjects.length - i - 1]
floatingObject.drawForeground()
}
}
function drawVisibleObjects() {
for (let i = 0; i < visibleFloatingObjects.length; i++) {
let floatingObject = visibleFloatingObjects[i]
@@ -283,12 +266,21 @@ function newFloatingLayer() {
*/
try {
thisObject.isProximityPhysicsNeeded = false // this might be turned on bu the visiblePhysics downstream if needed.
makeVisible()
makeInvisible()
visiblePhysics()
enginePhysics()
proximityPhysics()
if (thisObject.isProximityPhysicsNeeded === true) {
/*
This is an expensive calculation, so we are going to do it only when we need to.
*/
proximityPhysics()
}
function visiblePhysics() {
for (let i = 0; i < visibleFloatingObjects.length; i++) {
let floatingObject = visibleFloatingObjects[i]
@@ -444,6 +444,8 @@ function newUiObject() {
if (rightDragging !== true) { return }
if (thisObject.payload.chainParent !== undefined) { return }
UI.projects.superalgos.spaces.floatingSpace.floatingLayer.isProximityPhysicsNeeded = true
let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects
let compatibleTypes
@@ -586,6 +588,8 @@ function newUiObject() {
if (rightDragging !== true) { return }
if (thisObject.payload.referenceParent !== undefined) { return }
UI.projects.superalgos.spaces.floatingSpace.floatingLayer.isProximityPhysicsNeeded = true
let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects
let compatibleTypes
@@ -358,9 +358,6 @@ function newUiObjectTitle() {
let phrases = splitTextIntoPhrases(label, 2)
let lineSeparator = thisObject.payload.floatingObject.currentFontSize * 1.2
if (phrases.length > 3) {
let a = 1
}
for (let i = 0; i < phrases.length; i++) {
let phrase = phrases[i]
let point = {
@@ -375,65 +375,113 @@ exports.newTensorFlowBotModulesTensorFlowLibrary = function (processIndex) {
}
/*
Building the Labels Tensor
At this point we need to decide if we are going to learn or going to predict.
This is regulated by the backLearningPredictingRatio property at the config
of the Learning Algorithm of the Learning Session.
*/
if (layersModel.outputLayer === undefined) {
// TODO
}
if (layersModel.outputLayer.outputLabels === undefined) {
// TODO
}
learningSystem.evalFormulas(layersModel.outputLayer.outputLabels, layersModel.outputLayer.outputLabels.type)
let backLearningPredictingRatio = 0.8 // this is the default value.
for (let i = 0; i < layersModel.outputLayer.outputLabels.dataLabels.length; i++) {
let dataLabel = layersModel.outputLayer.outputLabels.dataLabels[i]
if (dataLabel.labelFormula === undefined) { continue }
let labelValue = learningSystem.formulas.get(dataLabel.labelFormula.id)
labels.push(labelValue)
}
tensorFlowData = require("@tensorflow/tfjs-data")
function* featuresGenerator() {
//console.log('Features: ' + features)
yield features
}
function* labelsGenerator() {
//console.log('Labels: ' + labels)
yield labels
}
const xs = tensorFlowData.generator(featuresGenerator)
const ys = tensorFlowData.generator(labelsGenerator)
const ds = tensorFlowData.zip({ xs, ys }).shuffle(1).batch(1)
let verbose = 0
let ecpochs = 1
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.verbose !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.verbose.config.value !== undefined) {
verbose = learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.verbose.config.value
}
if (sessionParameters.learningAlgorithm !== undefined) {
if (sessionParameters.learningAlgorithm.config.backLearningPredictingRatio !== undefined) {
backLearningPredictingRatio = sessionParameters.learningAlgorithm.config.backLearningPredictingRatio
}
}
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.epochs !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.epochs.config.value !== undefined) {
ecpochs = learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.epochs.config.value
}
}
let initialCandle = Math.trunc(sessionParameters.timeRange.config.initialDatetime / sessionParameters.timeFrame.config.value)
let finalCandle = Math.trunc(sessionParameters.timeRange.config.finalDatetime / sessionParameters.timeFrame.config.value)
let currentCandle = Math.trunc(learningEngine.learningCurrent.learningEpisode.candle.begin.value / sessionParameters.timeFrame.config.value)
let thresholdCandle = (finalCandle - initialCandle) * backLearningPredictingRatio + initialCandle
if (currentCandle < thresholdCandle) {
await learn()
} else {
predict()
}
await tensorFlowModel.fitDataset(ds, {
verbose: verbose,
epochs: ecpochs
})
async function learn() {
/*
Building the Labels Tensor
*/
if (layersModel.outputLayer === undefined) {
// TODO
}
if (layersModel.outputLayer.outputLabels === undefined) {
// TODO
}
learningSystem.evalFormulas(layersModel.outputLayer.outputLabels, layersModel.outputLayer.outputLabels.type)
//tensorFlowModel.summary()
for (let i = 0; i < layersModel.outputLayer.outputLabels.dataLabels.length; i++) {
let dataLabel = layersModel.outputLayer.outputLabels.dataLabels[i]
if (dataLabel.labelFormula === undefined) { continue }
let labelValue = learningSystem.formulas.get(dataLabel.labelFormula.id)
labels.push(labelValue)
}
tensorFlowData = require("@tensorflow/tfjs-data")
function* featuresGenerator() {
//console.log('Features: ' + features)
yield features
}
function* labelsGenerator() {
//console.log('Labels: ' + labels)
yield labels
}
const xs = tensorFlowData.generator(featuresGenerator)
const ys = tensorFlowData.generator(labelsGenerator)
const ds = tensorFlowData.zip({ xs, ys }).shuffle(1).batch(1)
let verbose = 0
let ecpochs = 1
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.verbose !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.verbose.config.value !== undefined) {
verbose = learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.verbose.config.value
}
}
}
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.epochs !== undefined) {
if (learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.epochs.config.value !== undefined) {
ecpochs = learningSystem.machineLearningLibrary.typeOfLearning.typeOfModel.model.fitDataset.epochs.config.value
}
}
}
await tensorFlowModel.fitDataset(ds, {
verbose: verbose,
epochs: ecpochs
})
}
async function predict() {
let featuresTensor = tensorFlowBackend.tensor([features])
let predictions = tensorFlowModel.predict(featuresTensor, { verbose: 1 })
/*
We will download the predictions to an array, and we will store each one at the
learning engine data structure.
*/
let predictionsArray = predictions.dataSync()
predictions.dispose()
featuresTensor.dispose()
for (let i = 0; i < predictionsArray.length; i++) {
let prediction = predictionsArray[i]
if (isNaN(prediction)) {
prediction = 0
}
if (learningEngine.predictions.predictions[i] === undefined) { continue }
learningEngine.predictions.predictions[i].predictionValue.value = prediction
learningEngine.predictions.predictions[i].begin.value = learningEngine.learningCurrent.learningEpisode.candle.begin.value
learningEngine.predictions.predictions[i].end.value = learningEngine.learningCurrent.learningEpisode.candle.end.value
}
}
}
function badDefinitionUnhandledException(err, message, node) {
+4
View File
@@ -387,6 +387,10 @@ function newCanvas() {
thisObject.mouse.action = 'key down'
checkMediaRecording(event)
event.x = thisObject.mouse.position.x
event.y = thisObject.mouse.position.y
UI.projects.superalgos.spaces.chartingSpace.onKeyPressed(event)
/* Shourcuts to Menu Items */