Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop
This commit is contained in:
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
|
||||
@@ -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": {
|
||||
|
||||
+2
-1
@@ -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",
|
||||
|
||||
-6
@@ -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 = {
|
||||
|
||||
+98
-50
@@ -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) {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in new issue
Block a user