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

Contribution: Data Mining Topic Documentation expanded.
This commit is contained in:
Luis Fernando Molina authored and GitHub committed 2021-05-22 18:46:40 -04:00
commit a0e37220ad
100 files changed
+1199 -737

No files matched your search

+6
View File
@@ -19,6 +19,7 @@ color: #324d50;
line-height: 150%;
margin: 20 30px;
margin: 20 25 20 30px;
caret-color: transparent;
}
.docs-node-html-footer-container {
@@ -29,6 +30,7 @@ line-height: 160%;
border-top: 5px solid #0295aa;
margin: 80px 0 0 0;
padding: 30 0 20 0px;
caret-color: transparent;
}
/* DELETE candidate (delete class assignment on DocsSapace.js too)
@@ -236,6 +238,7 @@ z-index:100;
padding: 0px 10px;
font-size: 95%;
line-height: 140%;
caret-color: #111;
}
/* Alerts */
@@ -810,6 +813,7 @@ display: table;
vertical-align: middle;
display: table-cell;
padding-right: 25px;
caret-color: transparent;
}
.docs-search-results-box {
@@ -826,6 +830,7 @@ width: 100%;
display: table;
padding-left: 180px;
margin-top: 20px;
caret-color: transparent;
}
.docs-search-results-header-tabs-container > input {
@@ -856,6 +861,7 @@ border-bottom: 3px solid #0295aa;
.docs-search-result-content {
border-top: 1px solid #0295aa;
margin-left: -180px;
caret-color: transparent;
}
.docs-search-result-content > div {
+2
View File
@@ -8,6 +8,7 @@ border-radius: 8px;
background-color: #fdfdfd;
-webkit-transition-duration: 1s;
transition-duration: 1s;
caret-color: transparent;
}
.tutorial-summary {
@@ -224,6 +225,7 @@ margin-bottom: 20px;
width: 100%;
-webkit-transition-duration: 1s;
transition-duration: 1s;
caret-color: transparent;
}
.tutorial-buttonsTable {
@@ -1 +1 @@
{"type":"Workspace","name":"Creating Custom Charts","rootNodes":[{"type":"Network","name":"My Network","project":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"18041\"\n}","project":"Superalgos","dataTasks":{"type":"Data Tasks","name":"New Data Tasks","project":"Superalgos","projectDataTasks":[{"type":"Project Data Tasks","name":"Superalgos","project":"Superalgos","exchangeDataTasks":[{"type":"Exchange Data Tasks","name":"Binanceus","project":"Superalgos","marketDataTasks":[{"type":"Market Data Tasks","name":"Binanceus BTC/USDT","project":"Superalgos","dataMineTasks":[{"type":"Data Mine Tasks","name":"Masters","project":"Superalgos","taskManagers":[{"type":"Task Manager","name":"Masters","project":"Superalgos","tasks":[{"type":"Task","name":"Exchange Raw Data","project":"Superalgos","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","config":"{ \n\"startDate\": \"2020-01-01\"\n}","project":"Superalgos","processes":[{"type":"Sensor Process Instance","name":"Exchange Raw Data Historic-OHLCVs","project":"Superalgos","id":"48da2d1f-85aa-4206-8e53-cc010c3280d2","savedPayload":{"position":{"x":26808.380470322878,"y":28508.890029831477},"targetPosition":{"x":26964.5208127148,"y":28252.725642225134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"7d9aefc0-f001-4acb-9e97-34039ed84072","savedPayload":{"position":{"x":26964.5208127148,"y":28252.725642225134},"targetPosition":{"x":27120.66115510672,"y":27996.56125461879},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9157e60f-5ffa-48e0-8d48-a5d328bcc073","savedPayload":{"position":{"x":27120.66115510672,"y":27996.56125461879},"targetPosition":{"x":27276.801497498644,"y":27740.39686701245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Webhooks","project":"Superalgos","bot":{"type":"Sensor Bot Instance","name":"Webhooks","config":"{ \n\"startDate\": \"2020-01-01\"\n}","project":"Superalgos","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","project":"Superalgos","id":"43d40b57-8729-4b76-8c23-785afca39d6c","savedPayload":{"position":{"x":26610.84526955405,"y":28345.79120334358},"targetPosition":{"x":26832.830678868915,"y":28143.993091233202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"d7618750-0098-4802-ac35-9d06ce6c534d","savedPayload":{"position":{"x":26832.830678868915,"y":28143.993091233202},"targetPosition":{"x":27054.81608818378,"y":27942.194979122825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"77c8d6b4-be65-43b9-8e4a-23036d9e03d9","savedPayload":{"position":{"x":27054.81608818378,"y":27942.194979122825},"targetPosition":{"x":27276.801497498644,"y":27740.39686701245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Volumes","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","config":"{ \n\"parameter1\": \"Value for parameter1 defined at the Product Definition\"\n}","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Market","project":"Superalgos","id":"0e5261ce-0641-49c1-944a-75ff40a394fa","savedPayload":{"position":{"x":26510.383548046007,"y":28199.02179461765},"targetPosition":{"x":26737.108420352284,"y":28002.563574434065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","project":"Superalgos","id":"3b721729-5767-4b5d-b62d-16d83eba5a88","savedPayload":{"position":{"x":26442.529811173474,"y":28059.338947742188},"targetPosition":{"x":26737.108420352284,"y":28002.563574434065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangemeLine truncated
{"type":"Workspace","name":"Creating Custom Charts","rootNodes":[{"type":"Network","name":"My Network","project":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"18041\"\n}","project":"Superalgos","dataTasks":{"type":"Data Tasks","name":"New Data Tasks","project":"Superalgos","projectDataTasks":[{"type":"Project Data Tasks","name":"Superalgos","project":"Superalgos","exchangeDataTasks":[{"type":"Exchange Data Tasks","name":"Binanceus","project":"Superalgos","marketDataTasks":[{"type":"Market Data Tasks","name":"Binanceus BTC/USDT","project":"Superalgos","dataMineTasks":[{"type":"Data Mine Tasks","name":"Masters","project":"Superalgos","taskManagers":[{"type":"Task Manager","name":"Masters","project":"Superalgos","tasks":[{"type":"Task","name":"Exchange Raw Data","project":"Superalgos","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","config":"{ \n\"startDate\": \"2020-01-01\"\n}","project":"Superalgos","processes":[{"type":"Sensor Process Instance","name":"Exchange Raw Data Historic-OHLCVs","project":"Superalgos","id":"48da2d1f-85aa-4206-8e53-cc010c3280d2","savedPayload":{"position":{"x":26808.380470322878,"y":28508.890029831477},"targetPosition":{"x":26964.5208127148,"y":28252.725642225134},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"7d9aefc0-f001-4acb-9e97-34039ed84072","savedPayload":{"position":{"x":26964.5208127148,"y":28252.725642225134},"targetPosition":{"x":27120.66115510672,"y":27996.56125461879},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"9157e60f-5ffa-48e0-8d48-a5d328bcc073","savedPayload":{"position":{"x":27120.66115510672,"y":27996.56125461879},"targetPosition":{"x":27276.801497498644,"y":27740.39686701245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Webhooks","project":"Superalgos","bot":{"type":"Sensor Bot Instance","name":"Webhooks","config":"{ \n\"startDate\": \"2020-01-01\"\n}","project":"Superalgos","processes":[{"type":"Sensor Process Instance","name":"Webhooks Check-Webhook","project":"Superalgos","id":"43d40b57-8729-4b76-8c23-785afca39d6c","savedPayload":{"position":{"x":26610.84526955405,"y":28345.79120334358},"targetPosition":{"x":26832.830678868915,"y":28143.993091233202},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Check-Webhook","id":"69f37820-ab16-4e19-bfd8-386dd6e249a3"}}}],"id":"d7618750-0098-4802-ac35-9d06ce6c534d","savedPayload":{"position":{"x":26832.830678868915,"y":28143.993091233202},"targetPosition":{"x":27054.81608818378,"y":27942.194979122825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"77c8d6b4-be65-43b9-8e4a-23036d9e03d9","savedPayload":{"position":{"x":27054.81608818378,"y":27942.194979122825},"targetPosition":{"x":27276.801497498644,"y":27740.39686701245},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Volumes","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","config":"{ \n\"parameter1\": \"Value for parameter1 defined at the Product Definition\"\n}","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Market","project":"Superalgos","id":"0e5261ce-0641-49c1-944a-75ff40a394fa","savedPayload":{"position":{"x":26510.383548046007,"y":28199.02179461765},"targetPosition":{"x":26737.108420352284,"y":28002.563574434065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","project":"Superalgos","id":"3b721729-5767-4b5d-b62d-16d83eba5a88","savedPayload":{"position":{"x":26442.529811173474,"y":28059.338947742188},"targetPosition":{"x":26737.108420352284,"y":28002.563574434065},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangemeLine truncated
@@ -1 +1 @@
{"type":"Workspace","name":"Getting Started","rootNodes":[{"type":"Network","name":"My Network","project":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"18041\"\n}","project":"Superalgos","dataTasks":{"type":"Data Tasks","name":"New Data Tasks","project":"Superalgos","projectDataTasks":[{"type":"Project Data Tasks","name":"Superalgos","project":"Superalgos","exchangeDataTasks":[{"type":"Exchange Data Tasks","name":"Binance","project":"Superalgos","marketDataTasks":[{"type":"Market Data Tasks","name":"Binance BTC/USDT","project":"Superalgos","dataMineTasks":[{"type":"Data Mine Tasks","name":"Masters","project":"Superalgos","taskManagers":[{"type":"Task Manager","name":"Masters","project":"Superalgos","tasks":[{"type":"Task","name":"Exchange Raw Data","project":"Superalgos","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","config":"{ \n\"startDate\": \"2020-01-01\"\n}","project":"Superalgos","processes":[{"type":"Sensor Process Instance","name":"Exchange Raw Data Historic-OHLCVs","project":"Superalgos","id":"d244c564-4e86-43c7-9796-dc3b6294ec8b","savedPayload":{"position":{"x":23490.023749611923,"y":29239.135911211026},"targetPosition":{"x":23779.801497498644,"y":29316.781624741783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"343313ae-5705-484d-8bf8-aed25ba61cfa","savedPayload":{"position":{"x":23779.801497498644,"y":29316.781624741783},"targetPosition":{"x":24069.579245385365,"y":29394.42733827254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8f38508-1cac-4ab1-815f-d338fc813377","savedPayload":{"position":{"x":24069.579245385365,"y":29394.42733827254},"targetPosition":{"x":24359.356993272086,"y":29472.073051803298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Volumes","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","config":"{}","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Market","project":"Superalgos","id":"f0ef12ed-f0fd-4b88-8e15-27cf24265a5f","savedPayload":{"position":{"x":23799.549372136753,"y":28802.457809532632},"targetPosition":{"x":24059.356993272086,"y":28952.457809532632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","project":"Superalgos","id":"7c8b312c-09bf-4c59-853f-1592391a9c57","savedPayload":{"position":{"x":24059.356993272086,"y":28652.457809532632},"targetPosition":{"x":24059.356993272086,"y":28952.457809532632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"8d58e84b-d7ef-464f-8079-0ec0887e3da3","savedPayload":{"position":{"x":24059.356993272086,"y":28952.457809532632},"targetPosition":{"x":24209.356993272086,"y":29212.265430667965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bf29e3bd-9386-408b-9091-042da0c53e81","savedPayload":{"position":{"x":24209.356993272086,"y":29212.265430667965},"targetPosition":{"x":24359.356993272086,"y":29472.073051803298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances and Supports","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Resistances and Supports","config":"{}","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","project":"Superalgos","id":"a707814e-b81b-4102-9b5b-4e2fe969324f","savedPayload":{"position":{"x":24437.002706802843,"y":28602.739808143135},"targetPosition":{"x":24514.6484203336,"y":28892.517556029856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"refeLine truncated
{"type":"Workspace","name":"Getting Started","rootNodes":[{"type":"Network","name":"My Network","project":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"18041\"\n}","project":"Superalgos","dataTasks":{"type":"Data Tasks","name":"New Data Tasks","project":"Superalgos","projectDataTasks":[{"type":"Project Data Tasks","name":"Superalgos","project":"Superalgos","exchangeDataTasks":[{"type":"Exchange Data Tasks","name":"Binance","project":"Superalgos","marketDataTasks":[{"type":"Market Data Tasks","name":"Binance BTC/USDT","project":"Superalgos","dataMineTasks":[{"type":"Data Mine Tasks","name":"Masters","project":"Superalgos","taskManagers":[{"type":"Task Manager","name":"Masters","project":"Superalgos","tasks":[{"type":"Task","name":"Exchange Raw Data","project":"Superalgos","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","config":"{ \n\"startDate\": \"2020-01-01\"\n}","project":"Superalgos","processes":[{"type":"Sensor Process Instance","name":"Exchange Raw Data Historic-OHLCVs","project":"Superalgos","id":"d244c564-4e86-43c7-9796-dc3b6294ec8b","savedPayload":{"position":{"x":23490.023749611923,"y":29239.135911211026},"targetPosition":{"x":23779.801497498644,"y":29316.781624741783},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"343313ae-5705-484d-8bf8-aed25ba61cfa","savedPayload":{"position":{"x":23779.801497498644,"y":29316.781624741783},"targetPosition":{"x":24069.579245385365,"y":29394.42733827254},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a8f38508-1cac-4ab1-815f-d338fc813377","savedPayload":{"position":{"x":24069.579245385365,"y":29394.42733827254},"targetPosition":{"x":24359.356993272086,"y":29472.073051803298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles Volumes","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","config":"{}","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Market","project":"Superalgos","id":"f0ef12ed-f0fd-4b88-8e15-27cf24265a5f","savedPayload":{"position":{"x":23799.549372136753,"y":28802.457809532632},"targetPosition":{"x":24059.356993272086,"y":28952.457809532632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Candles Volumes Multi-Period-Daily","project":"Superalgos","id":"7c8b312c-09bf-4c59-853f-1592391a9c57","savedPayload":{"position":{"x":24059.356993272086,"y":28652.457809532632},"targetPosition":{"x":24059.356993272086,"y":28952.457809532632},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"8d58e84b-d7ef-464f-8079-0ec0887e3da3","savedPayload":{"position":{"x":24059.356993272086,"y":28952.457809532632},"targetPosition":{"x":24209.356993272086,"y":29212.265430667965},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"bf29e3bd-9386-408b-9091-042da0c53e81","savedPayload":{"position":{"x":24209.356993272086,"y":29212.265430667965},"targetPosition":{"x":24359.356993272086,"y":29472.073051803298},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Resistances and Supports","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Resistances and Supports","config":"{}","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Resistances and Supports Multi-Period-Market","project":"Superalgos","id":"a707814e-b81b-4102-9b5b-4e2fe969324f","savedPayload":{"position":{"x":24437.002706802843,"y":28602.739808143135},"targetPosition":{"x":24514.6484203336,"y":28892.517556029856},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"refeLine truncated
@@ -27,27 +27,32 @@
},
{
"style": "Chapter",
"text": "V->Superalgos->Topic->Trading Systems->Trading systems are a robust implementation of a professional trading framework. They are flexible enough to support virtually any kind of trading logic, and still, they are structured enough to allow building strategies without coding. That said, if you can code, you are King.",
"text": "V->Superalgos->Topic->Data Mining->Data Mines deal with bots that process data and feature a visual scripting framework that solves most all of the infrastructure intricacies of building indicators and plotters.",
"updated": 1617708198397
},
{
"style": "Chapter",
"text": "VI->Superalgos->Topic->Trading Systems->Trading systems are a robust implementation of a professional trading framework. They are flexible enough to support virtually any kind of trading logic, and still, they are structured enough to allow building strategies without coding. That said, if you can code, you are King.",
"updated": 1610310549419
},
{
"style": "Chapter",
"text": "VI->Superalgos->Topic->Trading Logic->While the framework proposed by trading systems and trading strategies carry a fair bit of trading logic in and of themselves, it is how you define market situations along with the instructions passed to the Trading Bot that determine how strategies work.",
"text": "VII->Superalgos->Topic->Trading Logic->While the framework proposed by trading systems and trading strategies carry a fair bit of trading logic in and of themselves, it is how you define market situations along with the instructions passed to the Trading Bot that determine how strategies work.",
"updated": 1610310832197
},
{
"style": "Chapter",
"text": "VII->Superalgos->Topic->Low-Frequency Trading Bot->In Superalgos, the Trading Bot plays no part in the definition of the trading logic. Instead, it is the program that executes the trading logic, interacts with the exchange, and keeps track of orders.",
"text": "VIII->Superalgos->Topic->Low-Frequency Trading Bot->In Superalgos, the Trading Bot plays no part in the definition of the trading logic. Instead, it is the program that executes the trading logic, interacts with the exchange, and keeps track of orders.",
"updated": 1611236020198
},
{
"style": "Chapter",
"text": "VIII->Superalgos->Topic->LF Trading Bot Available Data Structures->This chapter describes the three main data structures made available by the Trading Bot.",
"text": "IX->Superalgos->Topic->LF Trading Bot Available Data Structures->This chapter describes the three main data structures made available by the Trading Bot.",
"updated": 1617708146321
},
{
"style": "Chapter",
"text": "IX->Superalgos->Topic->Order Management->One of the crucial aspects of trading automation is the management of orders. The system operates with assumptions that must be verified and synchronized with the exchange. Learning how the Low-Frequency Trading Bot manages orders will help you understand the life cycle of orders and how your definitions in the Open Stage and the Close Stage affect the results.",
"text": "X->Superalgos->Topic->Order Management->One of the crucial aspects of trading automation is the management of orders. The system operates with assumptions that must be verified and synchronized with the exchange. Learning how the Low-Frequency Trading Bot manages orders will help you understand the life cycle of orders and how your definitions in the Open Stage and the Close Stage affect the results.",
"updated": 1617708175194
},
{
@@ -56,7 +61,7 @@
},
{
"style": "Chapter",
"text": "X->Superalgos->Topic->Trading Engine->The trading engine is about making the data processed by the Trading Bot accessible. Use it while debugging strategies to visually track every piece of information processed by the trading bot at any point in time. Use it from within trading systems to feed strategies with the details of what happens at runtime.",
"text": "XI->Superalgos->Topic->Trading Engine->The trading engine is about making the data processed by the Trading Bot accessible. Use it while debugging strategies to visually track every piece of information processed by the trading bot at any point in time. Use it from within trading systems to feed strategies with the details of what happens at runtime.",
"updated": 1617708180990
},
{
@@ -65,19 +70,14 @@
},
{
"style": "Chapter",
"text": "XI->Superalgos->Topic->Trading Farms->Superalgos may coordinate Data Tasks and Trading Tasks across different machines on a network. Trading farms provide a robust environment for smart and scalable deployments.",
"text": "XII->Superalgos->Topic->Trading Farms->Superalgos may coordinate Data Tasks and Trading Tasks across different machines on a network. Trading farms provide a robust environment for smart and scalable deployments.",
"updated": 1617708186995
},
{
"style": "Chapter",
"text": "XII->Superalgos->Topic->Crypto Ecosystem->The crypto ecosystem manages the interactions with parties external to Superalgos, primarily exchanges.",
"text": "XIII->Superalgos->Topic->Crypto Ecosystem->The crypto ecosystem manages the interactions with parties external to Superalgos, primarily exchanges.",
"updated": 1617708192899
},
{
"style": "Chapter",
"text": "XIII->Superalgos->Topic->Data Mines->Data Mines deal with bots that process data and feature a visual scripting framework that solves most all of the infrastructure intricacies of building indicators and plotters.",
"updated": 1617708198397
},
{
"style": "Chapter",
"text": "XIV->Superalgos->Topic->Integrations->Superalgos integrates with Telegram Bots to broadcast announcements emerging from trading sessions. On the other hand, Superalgos supports receiving webhook messages, enabling automated actions originating from messages sent from third-party services, like TradingView.",
@@ -0,0 +1,14 @@
{
"type": "CCXT",
"definition": {
"text": "CCXT is a popular open source library that aims to standarize crypto exchanges APIs so as to make it easier for trading bots developers to access crypto exchanges. ",
"updated": 1621694347383
},
"paragraphs": [
{
"style": "Text",
"text": "Superalgos uses this library to fetch one minute candles from exchanges as the raw piece of information with witch it later builds the rest of the indicators. It also use it to place orders from the LF Trading Bot.",
"updated": 1621694429513
}
]
}
@@ -0,0 +1,13 @@
{
"type": "Dataset",
"definition": {
"text": "In Superalgos, a Dataset is a colection of JSON / text files organized in a certain way. ",
"updated": 1621695840891
},
"paragraphs": [
{
"style": "Text",
"text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
}
]
}
@@ -1,7 +1,8 @@
{
"type": "Data Mine",
"definition": {
"text": "A data mine is a hierarchy that contains definitions of sensor and indicators bots, and their plotters. These definitions make up the actual programs of such bots—the source code."
"text": "A data mine is a hierarchy that contains definitions of sensor and indicators bots, and their plotters. These definitions are consumed from the actual code of such bots.",
"updated": 1621708641767
},
"paragraphs": [
{
@@ -1,7 +1,8 @@
{
"type": "Sensor Bot",
"definition": {
"text": "A sensor bot is an algorithm that extracts raw data from external sources (i.e.: exchanges, Twitter, etc.) and stores it in a dataset that other bots may consume."
"text": "A sensor bot extracts raw data from external sources where a certain specific extracting algorithm needs to be coded, and stores it in a dataset that other bots may consume.",
"updated": 1621691864710
},
"paragraphs": [
{
@@ -10,7 +11,29 @@
},
{
"style": "Text",
"text": "The sensor bot node holds all definitions required for a sensor bot to function. Definitions are split between the definition of processes and products. A sensor's processes is an algorithm that obtains data from a third pary and produces an output for other bots to consume. Part of that output is the data products the bot creates."
"text": "When there is no need for a special algorithm to be coded, Superalgos users run an API Data Fetcher Bot, which uses an API Map to describe the API itself and the bot allows fetching data without the need to code an algorithm at all.",
"updated": 1621692364436
},
{
"style": "Title",
"text": "Current Implementation"
},
{
"style": "Text",
"text": "There are only two processes coded for the Sensor Bot so far:",
"updated": 1621692240145
},
{
"style": "List",
"text": "Historic-OHLCVs: It can specifically fetch 1 minute candles from exchanges supported by the CCXT open source library."
},
{
"style": "List",
"text": "Check Webhooks: It checks for information that arrived at the client comming from webhook calls from external systems."
},
{
"style": "Text",
"text": "More processes might be coded in the future as the system grows. "
},
{
"style": "Block",
@@ -28,7 +51,8 @@
},
{
"style": "List",
"text": "codeName is the name of the bot as used within the code of the system."
"text": "codeName is the name of the bot as used within the code of the system. This will also be used as the folder name at the Data-Storage folder structure.",
"updated": 1621692071539
}
]
}
@@ -100,8 +100,58 @@
},
{
"style": "Subtitle",
"text": "Changing Node's Configurations",
"updated": 1613846731449
"text": "Pressing Keys on the Design Space",
"updated": 1620866371352
},
{
"style": "Text",
"text": "It is also possible to press any combination of keys within the Design Space. The format works the same as above but the key press will happen within the context of the design space.",
"updated": 1620866727876
},
{
"style": "Javascript",
"text": "\"keyPressed\": {\n\"shiftKey\": true,\n\"ctrlKey\": true,\n\"metaKey\": true,\n\"key\": \"R\"\n}",
"updated": 1620866699727
},
{
"style": "Text",
"text": ""
},
{
"style": "Subtitle",
"text": "Toggling Map View",
"updated": 1620866823195
},
{
"style": "Text",
"text": "In order to switch between regular and map view, you can use the following configuration."
},
{
"style": "Javascript",
"text": "\"toggleMapView\": {\n \"view\": \"On\"\n }",
"updated": 1620867055273
},
{
"style": "Text",
"text": "Valid options are:",
"updated": 1620867068878
},
{
"style": "List",
"text": "\"On\""
},
{
"style": "List",
"text": "\"Off\""
},
{
"style": "Note",
"text": "When this configuration is active within a tutorial step, the user will be unable to switch between views manually.",
"updated": 1620867158361
},
{
"style": "Subtitle",
"text": "Changing Node's Configurations"
},
{
"style": "Text",
@@ -3,13 +3,22 @@
"pageNumber": 12,
"type": "Superalgos Review - elcoder's Superalgos Review",
"definition": {
"text": "\nI've just started using Superalgos and so far I'm blown away. The way the design is structured and the fact that everything is visualized makes it very intuitive and easier to grasp than comparable systems that are lacking in these areas. On top of that, this makes every structure (trading strategy, data mining, backtesting, etc...) highly configurable without the need for programming experience. \n\nLike I said, I'm very new to this project and for the short time I've used it I am falling in love with it. After delving into the first 3 tutorials it becomes quite obviouse that the potencial for both the Superalgos project and its'users are through the roof.\n\nelCoderCP4H",
"updated": 1620862380685
"text": "I've just started using Superalgos and so far I'm blown away. The way the design is structured and the fact that everything is visualized makes it very intuitive and easier to grasp than comparable systems that are lacking in these areas.",
"updated": 1621253734755
},
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
"text": "On top of that, this makes every structure (trading strategy, data mining, backtesting, etc...) highly configurable without the need for programming experience. ",
"updated": 1621253740784
},
{
"style": "Text",
"text": "Like I said, I'm very new to this project and for the short time I've used it I am falling in love with it. After delving into the first 3 tutorials it becomes quite obviouse that the potencial for both the Superalgos project and its'users are through the roof."
},
{
"style": "Text",
"text": "elCoderCP4H"
}
]
}
@@ -0,0 +1,41 @@
{
"review": "Superalgos Project Review",
"pageNumber": 12,
"type": "Superalgos Review - First Impression",
"definition": {
"text": "WOW! I like what I see!",
"updated": 1621290234633
},
"paragraphs": [
{
"style": "Text",
"text": "My first impression is just: WOW!",
"updated": 1621372762668
},
{
"style": "Text",
"text": "Someone really wanted to develop something completely unique."
},
{
"style": "Text",
"text": "Impressive Tutorials: They must have been a ton of work."
},
{
"style": "Text",
"text": "Playfull User Interface: I can see the interest to bring gamification to trading"
},
{
"style": "Text",
"text": "I am basically a visual person and therefore hope that the great visiualization of the bots trading actions will help me to develop working and profitable trading strategies. Because till now I am a more or less novice to trading and the crypto world.",
"updated": 1621290581690
},
{
"style": "Text",
"text": "I will stay tuned."
},
{
"style": "Text",
"text": "tikry2021"
}
]
}
@@ -0,0 +1,15 @@
{
"review": "Superalgos Project Review",
"pageNumber": 13,
"type": "Superalgos Review - the best tutorial i've ever followed",
"definition": {
"text": "Very beginner freindly and well done, also funny and entertaining!",
"updated": 1621370034737
},
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
}
]
}
@@ -0,0 +1,54 @@
{
"review": "Superalgos Project Review",
"pageNumber": 15,
"type": "Superalgos Review - Spodeian's Review",
"definition": {
"text": "A sophisticated program for making \"Low Frequency\" Trades. With some understandable hiccups and a world of potential.",
"updated": 1621419973729
},
"paragraphs": [
{
"style": "Text",
"text": "While writing this, the content of my review delted itself, it may of been due to some conflict with grammarly, but I'm not entirely sure, the small editing window and lack of ability to adjsut the size of said editing window only would of made preventing this more difficult.",
"updated": 1621420539827
},
{
"style": "Text",
"text": "This field originally began by telling me to left click instead of right click which caused some confusion, which isn't as annoying as the apparent lack of ability to stylise my text in the same way that the original text was, if there is a way it isn't explained.",
"updated": 1621419051154
},
{
"style": "Text",
"text": "A bigger issue is that any key bindings are shared with google chromes (one of the suggested browsers) and the lack of ability to easily change keybindings from within the UI.",
"updated": 1621419837438
},
{
"style": "Text",
"text": "One way that this could be dealt with is by using something like ElectronJS to standardise how it is opened for all users, not including headless sessions. The keybinding shared with google chrome is (I think)'Ctrl+Shift+A'.",
"updated": 1621419238632
},
{
"style": "Text",
"text": "Another issue I've just discovered is my lack of control of how many spaces there are inbetween grammar characters.",
"updated": 1621419243750
},
{
"style": "Text",
"text": "Lastly I am so far quite impressed with the abillities of Superalgos, however I would be excited to see that at some point the functionality required to support more exchanges is added, even if their data isn't avialble in 1-minute candlesticks for example or they use API that does not comply to CCXT, and I'm not sure yet if this is viable with the current build of Superalgos, but consolidating data from multiple exchanges for use with one cryptocurrency and having seperate computers dedicated to data mining and trading within one network would be an important step.",
"updated": 1621419831746
},
{
"style": "Text",
"text": "Something that would be incredible to see and would be much easier (but still difficult) with the addition of AI tools would be the ability to feed in arbitrary data (such as segments of news or non-crypto financial data) along with their time-periods and have this also be able to be parsed and used in your trading systems.",
"updated": 1621419936338
},
{
"style": "Text",
"text": "Ultimately, what this system can do already, is great, what it may be able to do with some nuturing however could be amazing, and I hope that even with my meagre ability I am able to adress some of the issues I have listed above."
},
{
"style": "Text",
"text": "Spodeian"
}
]
}
@@ -18,8 +18,8 @@
},
{
"style": "Note",
"text": " This change does not affet other nodes running Superalgos. The only one affected is the one you are connecting to with the UI.",
"updated": 1610543958104
"text": "This change does not affet other nodes running Superalgos. The only one affected is the one you are connecting to the UI.",
"updated": 1621288204638
}
]
}
@@ -0,0 +1,40 @@
{
"topic": "Data Mining",
"pageNumber": "1",
"type": "Data Mining - Introduction",
"definition": {
"text": "Data Mining in Superalgos means extracting data from external sources, procesing that data in order to have it ready for consumption by trading strategies.",
"updated": 1621694013759
},
"paragraphs": [
{
"style": "Text",
"text": "Superalgos offers a set of Data Mining tools. With those, users can fetch data from external sources, process them into more elaborate datasets, plot them at the charts and ultimately consume the data within their trading strategies.",
"updated": 1621694036120
},
{
"style": "Title",
"text": "The Bit Picture"
},
{
"style": "Text",
"text": "All of the data inside the Superalgos system has an origin somewhere at the Internet, outisde of the system. There are currently to ways to bring data into the system:",
"updated": 1621705240818
},
{
"style": "List",
"text": "By coding an Algorithm: with this method dev users can extract data from any source at all. The way to do it is to implement a new process into the already existing Sensor Bot. This ype of bot is just for that, to allow users to write code to extract data from different places outside of the system when they can not do it by the second method listed below. An example of such algorithms is the Historic-OHLCVs which uses the CCXT open source library to extract one minute candles from any exchange supported by that library.",
"updated": 1621705279013
},
{
"style": "List",
"text": "Without coding an Algorithm: (available since Beta 10) via the API Data Fetcher Bot, this method involves designing an API Map which is later feeded to an API Data Fetcher Bot at run time so that it can fetch data from APIs without needing the user to write a single line of code at all.",
"updated": 1621705316432
},
{
"style": "Text",
"text": "Once the data is in the system, it is then processed for different reasons by Indicator Bot s. Some of the processed data might be plotted, and some might be consumed from a Trading Strategy.",
"updated": 1621691628626
}
]
}
@@ -0,0 +1,95 @@
{
"topic": "Data Mining",
"pageNumber": "2",
"type": "Data Mining - Workflows",
"definition": {
"text": "Superalgos enable users to setup powerful data mining operations. At this page we will learn the workflows involved.",
"updated": 1621694789923
},
"paragraphs": [
{
"style": "Text",
"text": "In general data flows from the Internet into the Superalgos system. Inside of it it is processed and reprocessed and finally consumed by trading strategies.",
"updated": 1621705419979
},
{
"style": "Text",
"text": "As more users jump in and create more assets that they share with the community, the data mining capabilites of the system expands."
},
{
"style": "Title",
"text": "Two Main Data Workflows"
},
{
"style": "Title",
"text": ""
},
{
"style": "List",
"text": "Sensor Bot Workflow: Data arrives into the system through a Sensor Bot. In this main workflow, the resulting dataset serves as an input for an Indicator Bot that will further process it. Why? Because the data arrives in a format that is not standarized to be consumed from trading strategies or plotted at the charts just yet (except for Webhooks that records data in Single-File Dataset type and can be consumed from plotters and trading strategies).",
"updated": 1621711571390
},
{
"style": "List",
"text": "API Data Fetcher Bot Workflow: Data arrives into the system through a API Data Fetcher Bot. In this main workflow, the resulting dataset serves as an input for an Indicator Bot that will further process it.",
"updated": 1621695610873
},
{
"style": "Note",
"text": "Both of these 2 workflows start by producing Raw Data that has to be digested by Indicator Bots.",
"updated": 1621698358246
},
{
"style": "Subtitle",
"text": "Raw Data -> Indicator Bots",
"updated": 1621698286836
},
{
"style": "Text",
"text": "Indicator bots have two different purposes. "
},
{
"style": "List",
"text": "Standarize Datasets: They are used for standarization of raw data extracted from the internet by Sensor Bot s or API Data Fetcher Bot s. Once data is standarized, it can be run through other Indicator Bot s that will extract the juice out of them. Once standarized data can also be plotted and consumed from trading strategies. By standarizing we are specifically referring to transforming the data into a Dataset type that can be used for Plotting, to feed Learning Bots and Trading Bots. These Dataset types are Multi-Period-Daily and Milti-Period-Market. ",
"updated": 1621705567513
},
{
"style": "List",
"text": "Process Data: This means processing the data in any way which make sense for users. Many of this processing end up calculating standar indicators, others calculate non-standard stuff, maybe just user's ideas of what could be useful to extract from a certain dataset. The system is open and allows users to do just that, play with the data transforming it in any whay they wish.",
"updated": 1621695572285
},
{
"style": "Subtitle",
"text": "Indicators -> Plotters (for users)",
"updated": 1621698262190
},
{
"style": "Text",
"text": "Plotters are intended for users, not for bots. Plotters will render at the charts information of a Dataset based on the plotter's definition. Plotters can only read data from certain Dataset types, you will learn which ones later at this Topic.",
"updated": 1621697151527
},
{
"style": "Text",
"text": "Plotters are used by users to visually discover patterns in datasets and generate ideas, which can be on the side of how to process the data further or how to consume the data from a Learning Bot or a Trading Bot."
},
{
"style": "Subtitle",
"text": "Indicators -> Learning Bots (under development)",
"updated": 1621698378105
},
{
"style": "Text",
"text": "Learning Bots have access to data mined, and they use it to train their AI Models. Those AI Models once trained, can be used by trading strategies to request predictions and act upon them."
},
{
"style": "Subtitle",
"text": "Indicators -> Trading Bots",
"updated": 1621698387166
},
{
"style": "Text",
"text": "Trading bots are the final consumer of data, which they use to take trading decisions based on their definitions. The ultimate purpose of the whole Data Mining operation is to digest data so that is is easily accesible for trading strategies.",
"updated": 1621696940017
}
]
}
@@ -0,0 +1,36 @@
{
"topic": "Data Mining",
"pageNumber": "3",
"type": "Data Mining - Dataset Types",
"definition": {
"text": "Superalgos organizes data in datasets. These datasets are standarized across the system in different types.",
"updated": 1621695716288
},
"paragraphs": [
{
"style": "Text",
"text": "This is the complete list of Dataset types currently suported by the system:",
"updated": 1621711476824
},
{
"style": "List",
"text": "Single File: As the name suggest, this Dataset contains only one file with all the data in there. It is not frequently used. So far is the Dataset type where data comming from Webhooks is stored at. It is stored in this way because it assumed that not a lot of data will come through this pipe, only signals produced by external systems. Webhooks feature is expected to evolve in the future maniging the incoming data in another type of Dataset. This Dataset type can be plotted and it's data consumed from withing trading strategies.",
"updated": 1621696354757
},
{
"style": "List",
"text": "One-Min Daily: This Dataset type organizes data in one file per day, and as the name suggest, expects the data itself to belong to time periods of one minute. This type of Dataset can not be plotted or it's data consumed from trading strategies.",
"updated": 1621696328584
},
{
"style": "List",
"text": "Multi Period Daily: This Dataset type organizes data in one file per day for each Time Frame ranging from 1 minute to 45 minuntes. The data of this type of Dataset can be plotted and can be consumed by trading strategies.",
"updated": 1621696475925
},
{
"style": "List",
"text": "Multi Period Market: This Dataset type organizes data in only one file each Time Frame ranging from 1 hour to 24 hours. That means that the whole market history will be stored in one single file for each time frame. For example candles of 1 hour for a certain market, will be stored in a single file. The data of this type of Dataset can be plotted and can be consumed by trading strategies.",
"updated": 1621696582451
}
]
}
@@ -0,0 +1,89 @@
{
"topic": "Data Mining",
"pageNumber": "4",
"type": "Data Mining - Datasets Type Conversions",
"definition": {
"text": "Processes fetching data from the Internet are optimized for accesing a wide range of APIs available out there. The Dataset Type they use to store raw data is usually not the best one for data consumption within the system. For that reason Dataset Type conversions needs to be done.",
"updated": 1621701280910
},
"paragraphs": [
{
"style": "Text",
"text": "The type of conversion currently implemented into the system are: ",
"updated": 1621698757715
},
{
"style": "List",
"text": "From One-Min-Daily Dataset to Multi-Period-Daily.",
"updated": 1621701316752
},
{
"style": "List",
"text": "From One-Min-Daily Dataset to Multi-Period-Market.",
"updated": 1621701322738
},
{
"style": "Subtitle",
"text": "How to convert from one Dataset type to another"
},
{
"style": "Text",
"text": "There are two ways to convert from one Dataset type to another. ",
"updated": 1621699409527
},
{
"style": "List",
"text": "Custom Code: Users can write code to handle the conversion in cases the standard converter is not available for the type of conversion needed.",
"updated": 1621711355058
},
{
"style": "List",
"text": "Standard Converter: Use a standard converter to do the job. Currently there is only one Standard Converter and it works converting from One-Min-Daily Dataset type to Multi-Period-Daily and Multi-Period-Market Dataset types. ",
"updated": 1621711423050
},
{
"style": "Subtitle",
"text": "Custom Code Exmaple",
"updated": 1621699475475
},
{
"style": "Text",
"text": "The Candles-Volumes indicator at the Master Data Mine converts One-Min candles and volumes into candles and volumes of 2 min, 3 min, 4 up to 24hs. To do this it runs a custom made algorithm that aggregates that information provided by the Exchange Raw Data Sensor Bot.",
"updated": 1621699141131
},
{
"style": "Note",
"text": "The reason this was implemented as custom code is because when it was needed there was no standard converter implemented and still this was not migrated to the currently existing one."
},
{
"style": "Subtitle",
"text": "Standard Converter Example",
"updated": 1621701438440
},
{
"style": "Text",
"text": "The Asset Metrics Indicator Bot, defined at the Messari Data Mine uses a Standard Converter from One-Min-Daily Dataset type to Multi-Period-Daily and Multi-Period-Market Dataset types. To use the conferter, the bot's Process Definition nodes need to have at their config the framework of this converter.",
"updated": 1621711379111
},
{
"style": "Text",
"text": "To convert to Multi-Period-Daily, set the framework name like in this example:",
"updated": 1621701835162
},
{
"style": "Json",
"text": "{\n \"codeName\": \"From-One-Min-To-Multi-Period-Daily\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"From-One-Min-To-Multi-Period-Daily\"\n }\n}",
"updated": 1621701781838
},
{
"style": "Text",
"text": "To convert to Multi-Period-Market, set the framework name like in this example:",
"updated": 1621701845744
},
{
"style": "Json",
"text": "{\n \"codeName\": \"From-One-Min-To-Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"From-One-Min-To-Multi-Period-Market\"\n }\n}",
"updated": 1621701757557
}
]
}
@@ -0,0 +1,166 @@
{
"topic": "Data Mining",
"pageNumber": "5",
"type": "Data Mining - Indicator Frameworks",
"definition": {
"text": "Indicator Bots are ready to run custom code, or run code provided by a framework in order to do their job.",
"updated": 1621705750736
},
"paragraphs": [
{
"style": "Text",
"text": "When running custom code, users have full control of the process and there is no limit on what it can be done in terms of data manipulations. The trade off is that the user must be a developer.",
"updated": 1621702329009
},
{
"style": "Text",
"text": "On the other hand, by running one of the available frameworks, an indicator can do powerful stuff leaving to the user the task to write only a very tiny piece of code to do the data transformations. In this case the flexibility is reduced comparing to custom code.",
"updated": 1621705829052
},
{
"style": "Note",
"text": "You don't need to be a developer to write these code snipets, most of the time are very simple javascript code."
},
{
"style": "Text",
"text": "Here we will see examples of each use case and list all the currently available indicator frameworks users can use."
},
{
"style": "Title",
"text": "Types of Indicators Implementations"
},
{
"style": "List",
"text": "Custom Code: This means the Indicator will use custom made code to handle all data transformations. "
},
{
"style": "List",
"text": "UI-Defined: This means that the indictor will base it's behaviour on the definitioins defined at the UI including the code snippets provided by the user."
},
{
"style": "Title",
"text": "Custom Code Indicators",
"updated": 1621703361583
},
{
"style": "Subtitle",
"text": "Examples"
},
{
"style": "Text",
"text": "These two indicators are currently implemented with custom code."
},
{
"style": "List",
"text": "Candles-Volumes: Located at the Master Data Mine."
},
{
"style": "List",
"text": "Bollinger-Bands: Also localted at the Master Data Mine."
},
{
"style": "Subtitle",
"text": "How to Implement them",
"updated": 1621711303350
},
{
"style": "Text",
"text": "The way to implement a Custom Code Indicator is to set up at the config of the Process Definition that there is custom code for this process. Specifically, you need to add the botModule property to the config. This is how it looks like.",
"updated": 1621703510791
},
{
"style": "Json",
"text": "{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Produces different files with multi-period candles and volumes for entire markets.\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"botModule\": \"Candles Volumes Multi Period Market\"\n}",
"updated": 1621703524616
},
{
"style": "Text",
"text": "Then you will need to locate the Project Schema file for the project your bot belongs to. Inside of that file you will need to add some definitions in order for the system to be able to laod your new module at runtime and later execute it once users run your bot implemented in this way.",
"updated": 1621703616902
},
{
"style": "Text",
"text": "Most likely your new Bot will be added to the Superalgos project, so you shold find the Projects Schema file inside the Projects/Superalgos folder."
},
{
"style": "Text",
"text": "The definition to be added there should be something like this:"
},
{
"style": "Json",
"text": "\"botModules\": [\n {\n \"name\": \"Candles Volumes Multi Period Market\",\n \"propertyName\": \"candlesVolumesMultiPeriodMarket\",\n \"functionName\": \"newSuperalgosBotModulesCandlesVolumesMultiPeriodMarket\",\n \"fileName\": \"CandlesVolumesMultiPeriodMarket.js\",\n \"folderName\": \"Indicator-Bot/Candles-Volumes\"\n },",
"updated": 1621703869144
},
{
"style": "Text",
"text": "After that you will need to add a new Javascript module with your code. ",
"updated": 1621704019288
},
{
"style": "Title",
"text": "UI-Defined Indicators",
"updated": 1621704044375
},
{
"style": "Text",
"text": "In this case the list is long, as almost all other indicators in existence were build using a framework and defined at the UI with the minimun amount of code written by the users who created them."
},
{
"style": "Subtitle",
"text": "Indicator Frameworks",
"updated": 1621702926075
},
{
"style": "Text",
"text": "This is the complete list of available Indicator Frameworks",
"updated": 1621702917486
},
{
"style": "List",
"text": "From-One-Min-To-Multi-Period-Daily: It is used to convert one Dataset from type One-Min-Daily to Multi-Period-Daily.",
"updated": 1621703039301
},
{
"style": "List",
"text": "From-One-Min-To-Multi-Period-Market: It is used to convert one Dataset from type One-Min-Daily to Multi-Period-Market.",
"updated": 1621703053342
},
{
"style": "List",
"text": "Multi-Period-Daily: It is used to process data currently available at a Dataset of type Multi-Period-Daily and produce an output of a Dataset of the same type. How the data is going to be transformed is up to the user, since at the UI users can provide code snippets to handle the data transformation at the Data Building Procedure node.",
"updated": 1621703225204
},
{
"style": "List",
"text": "Multi-Period-Market: It is used to process data currently available at a Dataset of type Multi-Period-Market and produce an output of a Dataset of the same type. How the data is going to be transformed is up to the user, since at the UI users can provide code snippets to handle the data transformation at the Data Building Procedure node.",
"updated": 1621703273921
},
{
"style": "Subtitle",
"text": "How to use those Frameworks",
"updated": 1621711329707
},
{
"style": "Text",
"text": "In all cases, to use an Indicator Framework at your Indicator Bot all you need to do is to specify the framework name at the Process Definition. "
},
{
"style": "Text",
"text": "In this example, the process will use the From-One-Min-To-Multi-Period-Daily framwork."
},
{
"style": "Json",
"text": "{\n \"codeName\": \"From-One-Min-To-Multi-Period-Daily\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"From-One-Min-To-Multi-Period-Daily\"\n }\n}",
"updated": 1621704295681
},
{
"style": "Text",
"text": "In this other example, the process will use the Multi-Period-Market framwork."
},
{
"style": "Json",
"text": "{\n \"codeName\": \"Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\"\n }\n}",
"updated": 1621704273628
}
]
}
@@ -0,0 +1,75 @@
{
"topic": "Data Mining",
"pageNumber": "6",
"type": "Data Mining - Data Mines",
"definition": {
"text": "Data Mines are user created packages of definitions. These definitions usually include Sensor Bot, Indicator Bot and Plotter definitions. The Data Mines shipped with Superalgos are packages contributed by users of the software.",
"updated": 1621708561783
},
"paragraphs": [
{
"style": "Text",
"text": "It is important to undestand that a Data Mine is a package of definitions. When users run a Bot, they do it inside a Task and they need to reference a Process Definition exisiting at one Data Mine. When the bot is launched inside the Task, it receives at that moment all the information regarding the Task that is being used to launch the bot, but at the same time it receives all the information regarding the the Bot's definitions at the Data Mine.",
"updated": 1621709219036
},
{
"style": "Text",
"text": "With all that information the Bot is able to do it's job."
},
{
"style": "Title",
"text": "Who creates them?"
},
{
"style": "Text",
"text": "Data Mines are created by power users and contributed to the project (the ones shipping with the software). Users might create Data Mines for their personal use and never share them. If they share them, they received SA tokens for that, and also for mantaining them to adapt them to every new release, if necesary."
},
{
"style": "Title",
"text": "Supported Bots"
},
{
"style": "Text",
"text": "There are three types of bots that can hold their definitions at a Data Mine."
},
{
"style": "List",
"text": "Sensor Bots: used to fetch data from some source at the Internet by coding a specialized algorithm for that."
},
{
"style": "List",
"text": "API Data Fetcher Bots: used to fetch data from an Internet API without needing to code."
},
{
"style": "List",
"text": "Indicator Bots: used to process data."
},
{
"style": "Title",
"text": "Interdependency of Data Mines",
"updated": 1621709799491
},
{
"style": "Text",
"text": "Data Mines might depend of other Data Mines if any of their bots depend on bots belonging to other Data Mines. You will learn further down this Topic how a bot can depend on other bots in detail. In a nutshell, they can depend in two ways:"
},
{
"style": "List",
"text": "Data Dependency: This means that a Bot uses as an input the data produced by another bot."
},
{
"style": "List",
"text": "Status Dependency: This means that a Bot uses the status of another Bot as parameters for it's own process. The most common use case is when a Bot needs for instance the date where a market starts or ends. This information is automatically fetched from the Status Report of the bot that produces the raw data and knows which data is the oldest and the newest all the time."
},
{
"style": "List",
"text": "Execution Dependency: This means that a Bot depends on other Bot execution to finish in order for it to start it's own execution.",
"updated": 1621709849717
},
{
"style": "Note",
"text": "When a Data Mine depends on another Data Mine, both need to be present at the Workspace where the Task involving the execution of the Bot is.",
"updated": 1621709928655
}
]
}
@@ -0,0 +1,55 @@
{
"topic": "Data Mining",
"pageNumber": "7",
"type": "Data Mining - Managing Execution",
"definition": {
"text": "Bots can execute at their own pace or they could wait for other bots to finish executing in order to start. ",
"updated": 1621710031525
},
"paragraphs": [
{
"style": "Text",
"text": "Usually when a bot produces raw data, it executes itself based on the configuration of it's Process Definition node. These bots are usually the root of an execution tree formed by all the bots that will process and reprocess the raw data into more and more elaborate datasets.",
"updated": 1621710144112
},
{
"style": "Text",
"text": "There are two types of execution managment."
},
{
"style": "List",
"text": "Standalone Bots: These bots are the root of the Bot Execution Tree. They don't depend on any other bot to run. They usually run on a pre-defined schedulle, in most cases every one minute.",
"updated": 1621710324631
},
{
"style": "List",
"text": "Execution Dependent Bots: These bots are the branches of the Bot Execution Tree and they need to wait for another Bot to finish it's execution in order for it to start.",
"updated": 1621710352983
},
{
"style": "Text",
"text": "This is an example of how to configure a bot to be a Standalone Bot from the execution point of view. As you can see in the example below, the normalWaitTime property has a non zero value, in this case 60 seconds.",
"updated": 1621710692139
},
{
"style": "Json",
"text": "{\n \"codeName\": \"Historic-OHLCVs\",\n \"description\": \"Retrieves and saves historical maket data\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 60000,\n \"retryWaitTime\": 10000,\n \"botModule\": \"Exchange Raw Data Historic OHLCVs\"\n}",
"updated": 1621710641664
},
{
"style": "Text",
"text": "This is how to configure the Process Definition of a Bot that it's execution depends on other Bot. Here the normalWaitTime has a value of zero, which will force the boot to inmediatelly run the next loop, but since there is an Execution Started Event defined, that will make it wait until the referenced Bot finishes.",
"updated": 1621710760133
},
{
"style": "Json",
"text": "{\n \"codeName\": \"Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\"\n }\n}",
"updated": 1621710596317
},
{
"style": "Success",
"text": "In this case users must also define which bot to wait for. To do this they stablish a reference from the Execution Started Event node of the Bot that needs to wait, to the Execution Finished Event of the Bot they are waiting for to finish.",
"updated": 1621710539966
}
]
}
@@ -0,0 +1,36 @@
{
"topic": "Data Mining",
"pageNumber": "8",
"type": "Data Mining - Data Dependencies",
"definition": {
"text": "Indicator Bots have data dependencies. That means that they have as their input a Dataset created by other Bot. ",
"updated": 1621715782447
},
"paragraphs": [
{
"style": "Text",
"text": "You can also think about data dependencies as a type of relationship between bots. Bots producing raw data (Sensor Bot and API Data Fetcher Bot) don't have them, since their job is to extract data from an external source. At the same time they are the root of a tree or graph of data dependencies relationships.",
"updated": 1621715986533
},
{
"style": "Text",
"text": "The data dependencias are in fact at the Process Definition level. Each process might have their own set of data dependencies. "
},
{
"style": "Note",
"text": "It is possible for a single Bot's process to have more than one Data Dependency, from the same Bot or from different Bot's. That is particulary usefull to aggregate data from many datasets into another one. The dependent datasets could belong to Bots at the same Data Mine or at bots at other Data Mines. From the deployment point of view, the dependant datasets could be physically located at the same machine, or at multiple different machines."
},
{
"style": "Text",
"text": "The first declared dependency is called the Main Dependency and has a special meaning. The process of the Bot is going to iterate the Dataset of the Main Dependency to produce the output Dataset. All other data dependencies will be used to extract data from."
},
{
"style": "Text",
"text": "When a Bot has a Data Dependency of a dataset produced by a Bot defined in a different Data Mine, then both Data Mines must be present at the Workspace where the Bot is going to be lauched at."
},
{
"style": "Text",
"text": "The Masters Data Mine is the most referenced Data Mine because is the one that defines the Candles-Volumes Indicator Bot, that produces the most used information for trading systems: Candles."
}
]
}
@@ -0,0 +1,37 @@
{
"topic": "Data Mining",
"pageNumber": "9",
"type": "Data Mining - Status Reports",
"definition": {
"text": "Status Reports are files produced by each Bot's processes with some key information that the Bot needs to save in order to remember the next time is run.",
"updated": 1621716668465
},
"paragraphs": [
{
"style": "Text",
"text": "Most Bots in superalgos are run by the Task Server and they implement a Main Loop. At each loop execution, bots do their job and at the end they go to sleep. How much time they sleep and other details are configured at the Bot's process. ",
"updated": 1621717056723
},
{
"style": "Text",
"text": "Before going to sleep all the memory is flushed from all information related to the bot, so that machine resources are freed for other bots in the same machine to use. There is some info Bot's need to remember between every execution of the Main Loop, and between executions of the Task itself. That info is stored in a JSON / text file called the Status Report."
},
{
"style": "Text",
"text": "The name Status was used since the information stored is often the status of the Bot's process. Here is an example of a simple Status Report file."
},
{
"style": "Json",
"text": "{\n\"lastExecution\":\"2021-05-21T22:08:09.278Z\",\n\"lastFile\":\"2021-05-21T00:00:00.000Z\",\n\"beginingOfMarket\":\"Wed, 01 Jan 2020 00:00:00 GMT\"\n}",
"updated": 1621717169974
},
{
"style": "Note",
"text": "Status Report files also might include a data structure called Inter Execution Memory. Status information is kind of standard for all types of bots. Inter Execution Memory on the other hand depends on each Bot type and what is actually processing."
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,56 @@
{
"topic": "Data Mining",
"pageNumber": "10",
"type": "Data Mining - Status Dependencies",
"definition": {
"text": "Status Dependencies is a type of relationship between Bots. Sometimes bots don't depend on the Datasets produced by other bots, but they depend directly on the status of other bots.",
"updated": 1621717479906
},
"paragraphs": [
{
"style": "Text",
"text": "A good way to undestand why Status Dependencies are needed is with an example:",
"updated": 1621717585017
},
{
"style": "Text",
"text": "The Indicator Bot Bollinger-Bands depends on Candles-Volumes Dataset in order to calculate the Bollinger Bands, but it depend's on Exchange Raw Data Sensor Bot in order to know where the market begins, which is the date of the first piece of data. That information is part of the Status information that Exchange Raw Data Sensor Bot keeps at it's Satus Report.",
"updated": 1621717669486
},
{
"style": "Text",
"text": "Bots that produce Raw Data usually do not depend on any other Bot's status and they are usually the root of a dependency tree or graph. Any Bot might have zero to many status dependencies. For each Status Dependency, the Bot's process at runtime will load the Status Report file of the dependent Bot and let extract from there the information it needs.",
"updated": 1621718085593
},
{
"style": "Title",
"text": "Classification by Utility",
"updated": 1621718216510
},
{
"style": "Text",
"text": "Status Dependency can be classified by their utility. This make it easier for processes to handle them in code. There are currently three different utilities:"
},
{
"style": "List",
"text": "Self Reference: this is used to load it's own Status Report to extract data from it or modify it."
},
{
"style": "List",
"text": "Market Ending Point: this means that the referenced Status Report is to be used to extract the information of where the market ends, meaning which date the market ends."
},
{
"style": "List",
"text": "Market Starting Point: this means that the referenced Status Report is to be used to extract the information of where the market begins.",
"updated": 1621718175842
},
{
"style": "Important",
"text": "A Bot's process is not allowed to update the Status Report belonging to other Bots."
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,25 @@
{
"topic": "Data Mining",
"pageNumber": "11",
"type": "Data Mining - Deployments",
"definition": {
"text": "Data Minign Bots can be deployed into one or many machines at the same time and they will automatically find the way too coordinate their actions.",
"updated": 1621718512909
},
"paragraphs": [
{
"style": "Text",
"text": "Once you are done defining your data mining Bots, you can move the Tasks that execute them to other Network Nodes and some other node structures at the Network hierarchy and the bot's will still run even from different machines on the network.",
"updated": 1621719049976
},
{
"style": "Text",
"text": "On one hand, the definitions at the Data Mine already contain the 3 types of relationships between Bots. Execution, Data Dependency and Status Dependency. On the other hand, the network hierarchy contains all the information needed to guess where the dependent bots are running (looking at the Tasks it can know at which machine in the network) and where the Datasets are in the network (looking at the Data Storage section).",
"updated": 1621719258047
},
{
"style": "Text",
"text": "Everytime a Task is executed, the whole Network hierarchy, together with the bot's definitions at Data Mines are sent to the Task Server which will help the bot to load the datasets defined as Data Depencies, the Status Reports defined as Status Dependencies and wait for the Bot's defined at the Execution Dependencies, no matter where all those resources are within the physical network. "
}
]
}
@@ -0,0 +1,16 @@
{
"topic": "Data Mining",
"pageNumber": "12",
"type": "Data Mining - Products",
"definition": {
"text": "All Datasets of any type of bot within the Superalgos system are considered products of the Bot that produced them. Why products? Because these dataset once the Superalgos Network is implemente wil be able to be sold to other users in the form of subscriptions.",
"updated": 1621721546261
},
"paragraphs": [
{
"style": "Text",
"text": "In the future, users will be able to offer products to the rest of the users of the Superalgos Network / Marketplace. A single bot might produce many as many products as the bot designer wishes. Each product might contain one or more datasets. ",
"updated": 1621721677750
}
]
}
@@ -0,0 +1,15 @@
{
"topic": "Data Mining",
"pageNumber": "13",
"type": "Data Mining - Plotting",
"definition": {
"text": "Each product might have one Plotter Module associated with it. This Plotter Module has all the definitions to inteerpret the Product's datasets and render the information at the charts.",
"updated": 1621721823675
},
"paragraphs": [
{
"style": "Text",
"text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
}
]
}
@@ -0,0 +1,15 @@
{
"topic": "Data Mining",
"pageNumber": "14",
"type": "Data Mining - Consuming Data From Strategies",
"definition": {
"text": "Traing Bots can have as Data Dependencies datasets from any Indicator Bots. This allows Trading Strategies to act upon the data processed by Indicator Bots.",
"updated": 1621721963137
},
"paragraphs": [
{
"style": "Text",
"text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
}
]
}
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "1",
"type": "Data Mine Hierarchy",
"topic": "Data Mining",
"pageNumber": "15",
"type": "Data Mining - Data Mine Hierarchy",
"definition": {
"text": "Data mines enable the processing of data by consuming datasets others have produced, performing calculations, and outputting a new value-added data product that others may consume.",
"updated": 1611407680590
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "2",
"type": "Indicator Bots",
"topic": "Data Mining",
"pageNumber": "16",
"type": "Data Mining - Indicator Bots",
"definition": {
"text": "Indicator bots enable the processing of data by consuming datasets others have produced, performing calculations, and outputting a new value-added data product that others may consume.",
"updated": 1611408124910
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "3",
"type": "Indicator Bots - Process Definition",
"topic": "Data Mining",
"pageNumber": "17",
"type": "Data Mining - Indicator Bots - Process Definition",
"definition": {
"text": "The process definition is the compilation of configurations, dependencies, and references that make up a process.",
"updated": 1611410324543
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "4",
"type": "Indicator Bots - Product Definition",
"topic": "Data Mining",
"pageNumber": "18",
"type": "Data Mining - Indicator Bots - Product Definition",
"definition": {
"text": "The product definition is the compilation of configurations, references, and JavaScript code that make up the data product.",
"updated": 1611425764441
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "6",
"type": "Indicator Bots - Data Mining Workflow",
"topic": "Data Mining",
"pageNumber": "19",
"type": "Data Mining - Indicator Bots - Data Mining Workflow",
"definition": {
"text": "When running on a data mining operation, indicators follow a cycle designed to fulfill their purpose: to process data others have produced and make the result available for others to consume.",
"updated": 1611427674749
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "7",
"type": "Indicator Bots - Coding the Indicator's Logic",
"topic": "Data Mining",
"pageNumber": "20",
"type": "Data Mining - Indicator Bots - Coding the Indicator's Logic",
"definition": {
"text": "Learn how to use data dependencies, the variable object, and how to deal with indicators with irregular periods.",
"updated": 1611429211176
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "8",
"type": "Plotters",
"topic": "Data Mining",
"pageNumber": "21",
"type": "Data Mining - Plotters",
"definition": {
"text": "Plotters read data products created by bots and map certain coordinate points to use them as vertices for polygons, which are assigned styles to create graphic representations of the underlying data.",
"updated": 1611431276108
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "9",
"type": "Plotters - Plotter Panel",
"topic": "Data Mining - Data Mines",
"pageNumber": "22",
"type": "Data Mining - Plotters - Plotter Panel",
"definition": {
"text": "A plotter panel allows building panels with numerical representations of data.",
"updated": 1611432021846
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "10",
"type": "Plotters - Shapes",
"topic": "Data Mining",
"pageNumber": "23",
"type": "Data Mining - Plotters - Shapes",
"definition": {
"text": "Shapes define coordinate points to use as vertex for polygons, which are assigned styles.",
"updated": 1611432676884
@@ -1,7 +1,7 @@
{
"topic": "Data Mines",
"pageNumber": "11",
"type": "How to Build an Indicator - Video Series",
"topic": "Data Mining",
"pageNumber": "24",
"type": "Data Mining - How to Build an Indicator - Video Series",
"definition": {
"text": "This video series goes through the entire process of building an indicator, step by step.",
"updated": 1611434001380
@@ -1,6 +1,6 @@
{
"tutorial": "Basic Education",
"pageNumber": 37,
"pageNumber": "37",
"type": "Tutorial Step - Only Share Shares!",
"definition": {
"text": "Shares are just like Backups, but the resulting file is stripped off sensitive personal information!",
@@ -8,21 +8,49 @@
"name": "share-entity",
"project": "Superalgos"
},
"updated": 1617037759268
"updated": 1617037759268,
"translations": [
{
"language": "IT",
"text": "Le Shares sono come i Backups, ma dal file vengono rimossi i dati personali e sensibili!",
"updated": 1619546242891
}
]
},
"paragraphs": [
{
"style": "Text",
"text": "Get used to share Shares! This good practice will help you avoid dangerous mistakes in the future!",
"updated": 1617037960260
"updated": 1617037960260,
"translations": [
{
"language": "IT",
"text": "Abituati al loro utilizzo! È una buona pratica per evitare possibili errori pericolosi in futuro!",
"updated": 1619546289258
}
]
},
{
"style": "Callout",
"text": "Read the page about Shares for more info!"
"text": "Read the page about Shares for more info!",
"translations": [
{
"language": "IT",
"text": "Leggi la pagina sulle Shares per maggiori info!",
"updated": 1619546300806
}
]
},
{
"style": "Warning",
"text": "Whenever you wish to share your work, never share your Workspace files or Backups. Those files may contain sensitive information such as your Exchange Account Key. Instead, share your Shares!"
"text": "Whenever you wish to share your work, never share your Workspace files or Backups. Those files may contain sensitive information such as your Exchange Account Key. Instead, share your Shares!",
"translations": [
{
"language": "IT",
"text": "Quando vuoi condividere il tuo lavoro, non condividere mai i tuoi Workspace o Backups. Questi file possono contenere informazioni sensibili, come la tua Exchange Account Key. Piuttosto, condividi le tue Shares!",
"updated": 1619546375019
}
]
}
]
}
@@ -1,34 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 37,
"type": "Tutorial Step - Working with Workspaces",
"definition": {
"text": "You may think of a workspace as a stage in a theatre. It is the setting on which something will play out!",
"icon": {
"name": "workspace",
"project": "Superalgos"
},
"updated": 1615893942449
},
"paragraphs": [
{
"style": "Text",
"text": "You may set up as many workspaces as you like, each of them for specific use cases. For example:",
"updated": 1615904641004
},
{
"style": "List",
"text": "You may have a workspace to build a Trading Sytem that will need specific indicators from a specific Data Mine."
},
{
"style": "List",
"text": "You may have another workspace setup with all the available indicators so that you may study how each of them works.",
"updated": 1615904707330
},
{
"style": "Callout",
"text": "Read this page to learn the basics about how to deal with workspaces...",
"updated": 1615904777283
}
]
}
@@ -1,38 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 38,
"type": "Tutorial Step - Your Workspace vs Plugins",
"definition": {
"text": "Go to your File Explorer app and look for the following paths relative to the root Superalgos folder...",
"icon": {
"name": "plugins",
"project": "Superalgos"
},
"updated": 1615906049600
},
"paragraphs": [
{
"style": "Json",
"text": "\\My-Workspaces\n",
"updated": 1615906070844
},
{
"style": "List",
"text": "In this folder, you will find a file named Getting Started.json. This is the current workspace; the one you are using at this moment. Everything you have been doing lately has been stored in this file.",
"updated": 1615906276410
},
{
"style": "Json",
"text": "\\Projects\\Superalgos\\Plugins\\Workspaces"
},
{
"style": "List",
"text": "In this folder, you will find Plugin Workspaces shipping with Superalgos. You may want to read the Plugin Workspaces topic in the Docs to learn what each of them is about!",
"updated": 1616259823223
},
{
"style": "Text",
"text": ""
}
]
}
@@ -1,35 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 39,
"type": "Tutorial Step - The Current Workspace",
"definition": {
"text": "The current workspace is the one you are using at any point.",
"icon": {
"name": "workspace",
"project": "Superalgos"
},
"updated": 1615906908608
},
"paragraphs": [
{
"style": "Text",
"text": "If you close and restart the app, or refresh the UI, the system loads the workspace that was last in use.",
"updated": 1615907362014
},
{
"style": "Callout",
"text": "Go to the menu of the Workspace node, double-click on the Getting Started label and change the name of the workspace to Basic Education.",
"updated": 1615907154715
},
{
"style": "Text",
"text": "Now hit Ctrl + Shift + Alt + Key-S",
"updated": 1615907276880
},
{
"style": "Success",
"text": "You just created a new workspace! Go to the My-Workspaces folder to verify the new file is there.",
"updated": 1615907412107
}
]
}
@@ -1,38 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 40,
"type": "Tutorial Step - Let's Talk Plugins",
"definition": {
"text": "Plugins are data structures that ship with the system and that you may call into any workspace using the Plugins hierarchy.",
"updated": 1615914003358,
"icon": {
"name": "plugins",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "Plugins are data structures meant to be reused. That is why they ship as plugins, so that you may place them on any workspace.",
"updated": 1615917170964
},
{
"style": "Callout",
"text": "Expand the Plugins node!"
},
{
"style": "Text",
"text": "As you can tell from the structure of the hierarchy, there are several types of plugins! They ship as JSON files, sorted by type in the plugins folder. Check it out!",
"updated": 1615917052972
},
{
"style": "Json",
"text": "\\Projects\\Superalgos\\Plugins",
"updated": 1615916283983
},
{
"style": "Text",
"text": ""
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 41,
"type": "Tutorial Step - How Plugins Work",
"definition": {
"text": "Find the Plugin Trading Systems node and expand it! Note the Plugin File node named Masters-Lightning-Strike...",
"icon": {
"name": "expand-structure-of-nodes",
"project": "Superalgos"
},
"updated": 1615919140092
},
"paragraphs": [
{
"style": "Text",
"text": "Lightning Strike is the demo Trading System you've been playing with during the Welcome tutorial. It has been placed as a plugin in this workspace!",
"updated": 1615924603782
},
{
"style": "Callout",
"text": "Follow the orange dotted line downwards until you find the node it connects to! Use the keyboard trick Ctrl + arrows to go faster!",
"updated": 1615919519995
},
{
"style": "Text",
"text": "That's it! You found the Lightning Strike Trading System node. If you drag it to the side, you will find the Plugin File Position node below.",
"updated": 1615919373745
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 42,
"type": "Tutorial Step - Positioning Plugins",
"definition": {
"text": "Here's the crazy bit... the Plugin File Position node determines where in the workspace the plugin is placed!",
"updated": 1615921131447,
"icon": {
"name": "plugin-file-position",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "That is why you found the Trading System node on top of the Plugin File Position node!",
"updated": 1615920675491
},
{
"style": "Success",
"text": "If you deleted the Trading System node, it would show up again the next time you reload the workspace! Plugins are loaded from the plugin file every time the workspace is loaded!",
"updated": 1615920995477
},
{
"style": "Text",
"text": "Feel free to try it! If so you wish, you may delete the Trading System node and refresh the page. Bear in mind that you will need to find the Basic Education tutorial and click Resume on the menu to continue!",
"updated": 1615921187621
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 43,
"type": "Tutorial Step - Placing Plugins",
"definition": {
"text": "To place a plugin in a workspace you must select the option to add the missing plugins on the node of the matching type!",
"icon": {
"name": "plugin-trading-systems",
"project": "Superalgos"
},
"updated": 1615925984822
},
"paragraphs": [
{
"style": "Callout",
"text": "Let's give it a shot! Select Add Missing Trading Systems in the Plugin Trading Systems node!",
"updated": 1615926961650
},
{
"style": "Text",
"text": "New Plugin File nodes are created for every plugin in the \\Plugins\\Trading-Systems folder! You may delete the Plugin File nodes you don't need and keep the ones you do need! Now you may pin the Plugin File Position node where you wish to place the actual plugin data structure!",
"updated": 1615927372538
},
{
"style": "Success",
"text": "Plugins will be added the next time you load the workspace! If you wish to test it, refresh!",
"updated": 1615978260752
}
]
}
@@ -1,25 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 44,
"type": "Tutorial Step - Non-Persistence of Changes",
"definition": {
"text": "Remember I said that the plugin file is loaded every time the workspace is loaded? This feature has an immediate consequence...",
"icon": {
"name": "bullet-error",
"project": "Superalgos"
},
"updated": 1615978752612
},
"paragraphs": [
{
"style": "Warning",
"text": "Hierarchies included in the workspace as plugins are not saved at the workspace level. As such, changes made in those hierarchies do not persist. If you wish to modify a plugin and keep working with the modified version in the future, you must either clone or backup the plugin and work on the resulting copy instead.",
"updated": 1615978808209
},
{
"style": "Success",
"text": "I will go through some specific use cases in the next few steps!",
"updated": 1615978913703
}
]
}
@@ -1,25 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 45,
"type": "Tutorial Step - Improving a Plugin",
"definition": {
"text": "Let's say you are a developer and are testing a new exchange. You wish to modify the Sensor Bot to introduce a new feature or param.",
"icon": {
"name": "sensor-bot",
"project": "Superalgos"
},
"updated": 1615996858987
},
"paragraphs": [
{
"style": "Text",
"text": "The Sensor Bot is part of the Masters Data Mine, which is usually included as a plugin in most plugin workspaces. In such a case, you must proceed like in the previous case: delete the Plugin File node corresponding to the Masters data mine and restore the data mine file from the Plugins\\Data-Mines folder as if it was a backup.",
"updated": 1615997651482
},
{
"style": "Success",
"text": "Once you finish, take a backup of the modified Masters Data Mine node and use the backup file to replace the Masters plugin file! Make sure you give it the same name! Then, submit a PR to contribute the improvements on the bot!",
"updated": 1615998024660
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 46,
"type": "Tutorial Step - Talking Exchanges",
"definition": {
"text": "Now that I mentioned testing exchanges, let's talk a bit about how Superalgos deals with them and which ones you may use...",
"icon": {
"name": "crypto-exchange",
"project": "Superalgos"
},
"updated": 1615999626738
},
"paragraphs": [
{
"style": "Text",
"text": "Superalgos uses CCXT, an open-source library proposing a standard for exchange API comms. The system works with exchanges complying with the standard:",
"updated": 1616000957350
},
{
"style": "Link",
"text": "List of Exchanges Pledging Compliance With CCXT->github.com/ccxt/ccxt/wiki/Exchange-Markets?r=Superalgos",
"updated": 1616001030925
},
{
"style": "Note",
"text": "However, appearing in the list is not enough! Many exchanges don't really comply! As a result, there is an ongoing community effort to test exchanges and document which may be used with Superalgos and how! This is the topic in the Docs covering the effort. Look at the TOC to find which exchanges have been tested and to which extent.",
"updated": 1616010477500
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 47,
"type": "Tutorial Step - Testing New Exchanges",
"definition": {
"text": "If you are a developer and your preferred exchange hasn't been tested, you may join the effort and help with testing!",
"icon": {
"name": "crypto-exchange",
"project": "Superalgos"
},
"updated": 1616062624384
},
"paragraphs": [
{
"style": "Text",
"text": "This topic in the Docs explains how to debug the Sensor Bot to get it to fetch data from an exchange. If the exchange supports the basic features required by Superalgos, you should end up with a solution!",
"updated": 1616062282282
},
{
"style": "Success",
"text": "Sharing the solution with the Community is a valuable contribution. Everyone that comes next may enjoy their favorite exchange too!",
"updated": 1616062506777
},
{
"style": "Important",
"text": "We highly recommend you complete your education on Superalgos doing all tutorials before you dive into setting up other exchanges.",
"updated": 1616062367623
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 48,
"type": "Tutorial Step - Clean Workspace",
"definition": {
"text": "Talking about tested exchanges and plugins, there is one plugin workspace you may use as a clean slate when designing new stuff!",
"icon": {
"name": "workspace",
"project": "Superalgos"
},
"updated": 1616173072644
},
"paragraphs": [
{
"style": "Note",
"text": "It's the Tested Exchanges Plugin Workspace!",
"updated": 1616173130789
},
{
"style": "Text",
"text": "Once you finish your initial education doing all existing tutorials, you will eventually be ready to start building your own Trading System. This is the plugin workspace you may use for that purpose!",
"updated": 1616173240467
},
{
"style": "Success",
"text": "It features a clean Trading System right out of the box, the Install New Market Tutorial, and the lineup of tested exchanges that you may use.",
"updated": 1616173448769
}
]
}
@@ -1,29 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 49,
"type": "Tutorial Step - Dealing With Data",
"definition": {
"text": "The data you download from exchanges and process with indicators is available across the board, accessible from any workspace and strategy.",
"icon": {
"name": "dataset-definition",
"project": "Superalgos"
},
"updated": 1616174427620
},
"paragraphs": [
{
"style": "Text",
"text": "Data is stored on disk under the Data-Storage folder and is organized by Project, Data Mine, bot, and Market. It doesn't matter what workspace you used to mine the data or process indicators.",
"updated": 1616175467234
},
{
"style": "Note",
"text": "All of the data is available to all workspaces, so that you may work with the same data sources irrespective of what you are doing."
},
{
"style": "Success",
"text": "There is no built-in data-management in the app. Use your file system instead!",
"updated": 1616175397455
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 50,
"type": "Tutorial Step - About Other Markets",
"definition": {
"text": "You may work with any of the markets listed at the exchange! Take a look at the setup in the Exchange Markets node!",
"icon": {
"name": "market",
"project": "Superalgos"
},
"updated": 1616176775093
},
"paragraphs": [
{
"style": "Text",
"text": "I'm not going to explain how to set up new markets as the topic is covered in the Install a New Market Tutorial in the Tested Exchanges Plugin Workspace. I just wanted to let you know that it's easy!",
"updated": 1616256472815
},
{
"style": "Callout",
"text": "Take a look at the menu of the BTC/USDT Market! Notice the Install Market and Uninstall Market buttons! That's how you do it!",
"updated": 1616176532878
},
{
"style": "Success",
"text": "I'll leave it at that and let you do the Install a New Market Tutorial when the time is right!",
"updated": 1616176871622
}
]
}
@@ -1,25 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 51,
"type": "Tutorial Step - Building Indicators",
"definition": {
"text": "If you are a developer or have at least a basic understanding of JavaScript you will be able to create your own indicators!",
"icon": {
"name": "indicator-bot",
"project": "Superalgos"
},
"updated": 1616180582873
},
"paragraphs": [
{
"style": "Text",
"text": "This is a crucial feature of Superalgos, as trading intelligence can't emerge without the ability to analyze market data! Again, I'm not going to go through how to build indicators at this point, but I do wish to let you know that we've got you covered!",
"updated": 1616181744667
},
{
"style": "Callout",
"text": "There is a comprehensive series of video tutorials explaining the entire process! Take a quick look at this page in the Docs!",
"updated": 1616181770763
}
]
}
@@ -1,29 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 52,
"type": "Tutorial Step - More Indicators?",
"definition": {
"text": "Indicators are built by the Community! Usually, a developer will build a few indicators he or she needs, and contribute them to the project in a new Data Mine!",
"updated": 1616235133472,
"icon": {
"name": "data-mine",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "The Community Data Mines Book is where you may find all existing data mines and their indicators! Each chapter in the book corresponds to a Data Mine...",
"updated": 1616233302089
},
{
"style": "Callout",
"text": "Scan the contents of each chapter to get an idea of what is available at this point!"
},
{
"style": "Success",
"text": "To use a Data Mine, you must include it in the workspace or as a plugin, and install the market. All Data Tasks will be created automatically!",
"updated": 1616235254167
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 53,
"type": "Tutorial Step - How About Strategies?",
"definition": {
"text": "The Community may also contribute Trading Systems! At this point, there're only a few, but we hope more will emerge soon!",
"icon": {
"name": "trading-system",
"project": "Superalgos"
},
"updated": 1616235875824
},
"paragraphs": [
{
"style": "Callout",
"text": "Search the Docs for Community Trading Systems!",
"updated": 1616235587063
},
{
"style": "Text",
"text": "Strategies contributed by the Community are fully documented so that you may use them for learning!",
"updated": 1616235658990
},
{
"style": "Warning",
"text": "Remember that while Trading Systems shipping with Superalgos may be fully functional, they are made available for educational purposes only! You are fully responsible for how you use them! Trading is a risky business!",
"updated": 1616235810717
}
]
}
@@ -1,30 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": 54,
"type": "Tutorial Step - Your Graduation",
"definition": {
"text": "Congratulations! You've graduated from your Basic Education and are ready to move on to more advanced stuff!",
"updated": 1616262672256,
"icon": {
"name": "trading-strategy",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "In the next tutorial you are going to learn how to update your app, switch branches to test the version in the develop branch, a few tricks about the Docs, and more!",
"updated": 1616262918705
},
{
"style": "Callout",
"text": "You'll also be able submit a review about your experience with Superalgos up to this point!",
"updated": 1616262935170
},
{
"style": "Success",
"text": "As you progress with Superalgos, you may need a refresher on the topics covered in this tutorial or the one before! That is a standard practice, so do come back until you learn all tricks!",
"updated": 1616263081822
}
]
}
@@ -1,56 +0,0 @@
{
"tutorial": "Basic Education",
"pageNumber": "36.5",
"type": "Tutorial Step - Only Share Shares!",
"definition": {
"text": "Shares are just like Backups, but the resulting file is stripped off sensitive personal information!",
"icon": {
"name": "share-entity",
"project": "Superalgos"
},
"updated": 1617037759268,
"translations": [
{
"language": "IT",
"text": "Le Shares sono come i Backups, ma dal file vengono rimossi i dati personali e sensibili!",
"updated": 1619546242891
}
]
},
"paragraphs": [
{
"style": "Text",
"text": "Get used to share Shares! This good practice will help you avoid dangerous mistakes in the future!",
"updated": 1617037960260,
"translations": [
{
"language": "IT",
"text": "Abituati al loro utilizzo! È una buona pratica per evitare possibili errori pericolosi in futuro!",
"updated": 1619546289258
}
]
},
{
"style": "Callout",
"text": "Read the page about Shares for more info!",
"translations": [
{
"language": "IT",
"text": "Leggi la pagina sulle Shares per maggiori info!",
"updated": 1619546300806
}
]
},
{
"style": "Warning",
"text": "Whenever you wish to share your work, never share your Workspace files or Backups. Those files may contain sensitive information such as your Exchange Account Key. Instead, share your Shares!",
"translations": [
{
"language": "IT",
"text": "Quando vuoi condividere il tuo lavoro, non condividere mai i tuoi Workspace o Backups. Questi file possono contenere informazioni sensibili, come la tua Exchange Account Key. Piuttosto, condividi le tue Shares!",
"updated": 1619546375019
}
]
}
]
}
@@ -13,7 +13,8 @@
{
"language": "IT",
"text": "Molti utenti scelgono di lanciare le branches da cartelle separate. È una buona soluzione per i contributors più attivi!",
"updated": 1619634353624
"updated": 1619634353624,
"style": "Definition"
}
]
},
@@ -26,19 +27,21 @@
{
"language": "IT",
"text": "Potresti avere due cloni del tuo fork che girano su cartelle diverse, ognuna su un diverso branch.",
"updated": 1619634392400
"updated": 1619634392400,
"style": "Text"
}
]
},
{
"style": "Note",
"text": "Two instances of Superalogs running from different folders are completely independent. They run distinct workspaces and output unique data.",
"updated": 1617018971209,
"text": "Two instances of Superalgos running from different folders are completely independent. They run distinct workspaces and output unique data.",
"updated": 1621286961563,
"translations": [
{
"language": "IT",
"text": "Due istanze di Superalgos eseguite da cartelle diverse sono completamente indipendenti. Contengono workspace separati e output diversi.",
"updated": 1619634452638
"updated": 1619634452638,
"style": "Note"
}
]
},
@@ -50,7 +53,8 @@
{
"language": "IT",
"text": "Questo setup ti permette di utilizzare la versione stabile contemporaneamente alla versione di un altro branch a cui vuoi contribuire, o su cui fai test! Ma non potrai lanciare due istanze separate insieme, a meno che non cambi le porte. Non parleremo di questo per ora!",
"updated": 1619634623463
"updated": 1619634623463,
"style": "Success"
}
]
}
@@ -13,7 +13,8 @@
{
"language": "IT",
"text": "In questo step, lancerai il comando per creare una pagina di recensione! Potrai poi editarla!",
"updated": 1619635348623
"updated": 1619635348623,
"style": "Definition"
}
]
},
@@ -26,7 +27,8 @@
{
"language": "IT",
"text": "La sintassi dei comandi è informale: ti piacerà! Leggi e segui le istruzioni sotto:",
"updated": 1619635406184
"updated": 1619635406184,
"style": "Text"
}
]
},
@@ -43,7 +45,8 @@
{
"language": "IT",
"text": "PRIMO: copia il comando sopra",
"updated": 1619635420152
"updated": 1619635420152,
"style": "List"
}
]
},
@@ -55,7 +58,8 @@
{
"language": "IT",
"text": "SECONDO: incolla in un editor di testo",
"updated": 1619635433451
"updated": 1619635433451,
"style": "List"
}
]
},
@@ -67,19 +71,21 @@
{
"language": "IT",
"text": "TERZO: sostituisci \"Your Review Title\" con un titolo. I titoli delle review devono essere unici!",
"updated": 1619635474439
"updated": 1619635474439,
"style": "List"
}
]
},
{
"style": "List",
"text": "FOURTH: Paste the updated command on the search/command box and click Enter.",
"updated": 1610736916242,
"text": "FOURTH: Paste the updated command on the search/command box and press Enter.",
"updated": 1621288831104,
"translations": [
{
"language": "IT",
"text": "QUARTO: incolla il nuovo comando sulla barra di ricerca/comando e premi Enter.",
"updated": 1619635504400
"updated": 1619635504400,
"style": "List"
}
]
}
@@ -11,11 +11,6 @@
}
},
"paragraphs": [
{
"style": "Callout",
"text": "Right-click to open the Design Space map for a birds eye view of the workspace.",
"updated": 1620553531060
},
{
"style": "Text",
"text": "The building blocks I installed are:",
@@ -19,11 +19,6 @@
{
"style": "Success",
"text": "This is the same trading system you interacted with during the welcome tutorials."
},
{
"style": "Callout",
"text": "Left-click to zoom back into the workspace.",
"updated": 1620553577819
}
]
}
@@ -0,0 +1,33 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 7,
"type": "Tutorial Step - Adjust for Your Exchange",
"definition": {
"text": "You may remember this question from the welcome tutorial. Are you trading at binance.com or binance.us?",
"updated": 1621521134471,
"icon": {
"name": "crypto-exchange",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "This workspace was built using binance.us. If that is your exchange go ahead and skip this step. However, if your data is stored on binance.com you will need to make one quick adjustment.",
"updated": 1621521898886
},
{
"style": "Callout",
"text": "Configure the Binance node to your left.",
"updated": 1621521971691
},
{
"style": "List",
"text": "Open the configuration and change the codeName to binance. Move the mouse pointer out of the configuration bubble and it will close and save automatically."
},
{
"style": "List",
"text": "Edit the label of the node to read Binance."
}
]
}
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 7,
"pageNumber": 8,
"type": "Tutorial Step - Charting Workspace Market",
"definition": {
"text": "To finish this basic setup, I have gone ahead and installed the BTC/USDT market for you.",
@@ -13,8 +13,8 @@
"paragraphs": [
{
"style": "Text",
"text": "The Install a New Market Tutorial taught you that installing a market sets up everything you need for a basic Superalgos workspace. This includes automatically setting up a Backtesting Session, a Live Trading Session, and charts for each Trading System present in the workspace.",
"updated": 1620553824986
"text": "The Install a New Market Tutorial taught you that installing a market sets up everything you need for a basic Superalgos workspace. This includes automatically setting up a Backtesting Session, Live Trading Session, and charts for each Trading System present in the workspace.",
"updated": 1621520234424
},
{
"style": "Success",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 8,
"pageNumber": 9,
"type": "Tutorial Step - Your First Chart",
"definition": {
"text": "This tutorial will help you set up your first custom Chart. The foundational concepts you learn here will help you make the most out of the Charting Space.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 9,
"pageNumber": 10,
"type": "Tutorial Step - Dashing Dashboards",
"definition": {
"text": "The first node we will learn about today is the Dashboard. A Dashboard helps us stay organized.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 10,
"pageNumber": 11,
"type": "Tutorial Step - Dashboards in the Future",
"definition": {
"text": "The future holds more in store. But it is still a work in progress!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 11,
"pageNumber": 12,
"type": "Tutorial Step - Magical Machines",
"definition": {
"text": "You've seen these portals to another dimension before! Now let's take a closer look at the magical Time Machine.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 12,
"pageNumber": 13,
"type": "Tutorial Step - Keep It in One Place",
"definition": {
"text": "Setting up a Time Machine will allow you to keep your data synchronized and accessible.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 13,
"pageNumber": 14,
"type": "Tutorial Step - Without Further Ado",
"definition": {
"text": "I know I'm ready to customize some charts. Are you? Let's walk through how to add the foundational nodes we need to start our chart.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 14,
"pageNumber": 15,
"type": "Tutorial Step - Add a Time Machine",
"definition": {
"text": "Look at you! You are making great progress. Now lets get that Time Machine added!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 15,
"pageNumber": 16,
"type": "Tutorial Step - The Three Scales",
"definition": {
"text": "Did you notice the three nodes automatically added to your Time Machine?",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 16,
"pageNumber": 17,
"type": "Tutorial Step - Chart Spawning",
"definition": {
"text": "One thing to keep in mind when adding Time Machines is that they may spawn on top of other charts within the Charting Space.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 17,
"pageNumber": 18,
"type": "Tutorial Step - I See a Chart!",
"definition": {
"text": "Did you find the Time Machine you added? Don't forget to move around the Charting Space, I know it's here!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 18,
"pageNumber": 19,
"type": "Tutorial Step - Add a Timeline Chart",
"definition": {
"text": "Now that we have something to hold our charts, let's go ahead and add one!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 19,
"pageNumber": 20,
"type": "Tutorial Step - Why Is It Blank?",
"definition": {
"text": "Woohoo, you did it! You have added your first custom chart. Let's see what we've got so far. Zoom all the way into your chart and take a look around.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 20,
"pageNumber": 21,
"type": "Tutorial Step - Empty Layer Manager",
"definition": {
"text": " This step will play a video in full screen mode.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 21,
"pageNumber": 22,
"type": "Tutorial Step - The Chart of Many Talents",
"definition": {
"text": "The Timeline Chart gives you total control over the layers available in your chart.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 22,
"pageNumber": 23,
"type": "Tutorial Step - Herding Layers",
"definition": {
"text": "Let's get into the nitty gritty of layer managment.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 23,
"pageNumber": 24,
"type": "Tutorial Step - Your Data Treasure Trove",
"definition": {
"text": "The Data Storage node holds all the important data your bots work so hard to produce. Think of it like your own personal tresure chest full of data.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 24,
"pageNumber": 25,
"type": "Tutorial Step - Follow the Tree!",
"definition": {
"text": "Follow the Data Mines Data hierarchy and find the Data Mine Products.",
@@ -18,17 +18,17 @@
},
{
"style": "Text",
"text": "Did you find it? Keep going farther down the hierarchy until you see them!",
"updated": 1620555757952
"text": "Did you find it? Keep going farther down the hierarchy until you see them! You should see three data mine products nodes. One for each Data Mine installed within this Workspace.",
"updated": 1621522552567
},
{
"style": "Text",
"text": ""
},
{
"style": "Important",
"text": "You should see three data mine products nodes. One for each Data Mine install within this Workspace.",
"updated": 1617849622065
"style": "Note",
"text": "These data structures were automatically installed during the market install process.",
"updated": 1621522497281
}
]
}
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 25,
"pageNumber": 26,
"type": "Tutorial Step - The Data You Want to See",
"definition": {
"text": "In Superalgos, you control the flow of data. Talk about control!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 26,
"pageNumber": 27,
"type": "Tutorial Step - Link Chart to Data Products",
"definition": {
"text": "Now let's get your Time Machine in position to connect to some Data Products!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 27,
"pageNumber": 28,
"type": "Tutorial Step - Make the Connection",
"definition": {
"text": "You got this. Creating references is a piece of cake. Let's make the connection!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 28,
"pageNumber": 29,
"type": "Tutorial Step - Add the Layers",
"definition": {
"text": "This is an easy step to forget but so important. Add those layers so we can see the data in our chart!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 29,
"pageNumber": 30,
"type": "Tutorial Step - Verify the Layers",
"definition": {
"text": "As you may have noticed, the layers that were added match the Bot Products under the Masters Data Mine Products node.",
@@ -18,8 +18,8 @@
},
{
"style": "Note",
"text": "To keep things simple, I have trimmed down the indicators held within each Data Mine. When you install the Masters Data Mine on your own you will have access to many more indicators!",
"updated": 1620048513251
"text": "You can have more fine tuned control over the layers available in your charts by adding or deleting individual layers. Your charts are truly yours! ",
"updated": 1621522922044
}
]
}
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 30,
"pageNumber": 31,
"type": "Tutorial Step - It’s Alive!",
"definition": {
"text": "Let's take a look at your new working chart. I hope you are as excited as I am!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 31,
"pageNumber": 32,
"type": "Tutorial Step - Link Chart to Trading System",
"definition": {
"text": "We are on a roll! I hope you are ready to see your Trading System in action next!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 32,
"pageNumber": 33,
"type": "Tutorial Step - Connection One",
"definition": {
"text": "Let's make the first connection. Go find your Time Machine and drag it back here.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 33,
"pageNumber": 34,
"type": "Tutorial Step - Back to Data Storage",
"definition": {
"text": "Let's find some more Data Products. You are gonna be a pro at finding things in the Data Storage hierarchy.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 34,
"pageNumber": 35,
"type": "Tutorial Step - Another Timeline Chart",
"definition": {
"text": "To connect with our Trading System we will need another Timeline Chart. Let's go ahead and add it!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 35,
"pageNumber": 36,
"type": "Tutorial Step - Connection Two",
"definition": {
"text": "We are almost there! Go drag your Time Machine back over here and make the last connection.",
@@ -17,8 +17,8 @@
},
{
"style": "Callout",
"text": "Now create a reference between your new Layer Manager and the Trading Mind Products node.",
"updated": 1617886479339
"text": "Now create a reference between your new Layer Manager and the Trading Mind Products node labeled \"Lightning Strike Backtesting Session\"",
"updated": 1621523291610
},
{
"style": "Success",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 36,
"pageNumber": 37,
"type": "Tutorial Step - Don’t Forget the Layers!",
"definition": {
"text": "You’ve done this before! Make sure you add those layers. Blank charts are no fun.",
@@ -19,6 +19,11 @@
"style": "Text",
"text": "This is an easy step to forget but very important! If there are't any layers under the layer manager, nothing will show up no matter how hard you try.",
"updated": 1617888419678
},
{
"style": "Note",
"text": "When layers start to stack up things can get a bit out of hand. It is a good idea to take some time and arrange and collapse the layer nodes and folders to help keep things looking clean.",
"updated": 1621523558968
}
]
}
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 37,
"pageNumber": 38,
"type": "Tutorial Step - Check the Chart",
"definition": {
"text": "At this point everything is all hooked up, hurray! Go ahead and take your new shine charts for a spin!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 38,
"pageNumber": 39,
"type": "Tutorial Step - Not Seeing Anything?",
"definition": {
"text": "Are you having trouble with the Trading Layers? It is important you know what you are looking for otherwise you might not find it.",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 39,
"pageNumber": 40,
"type": "Tutorial Step - Easy as 1, 2, 3",
"definition": {
"text": "You did it! I knew you could. You have successfully added you first custom chart. I hope you had as much fun as I did!",
@@ -1,6 +1,6 @@
{
"tutorial": "How to Set up a New Chart",
"pageNumber": 40,
"pageNumber": 41,
"type": "Tutorial Step - Before I Go",
"definition": {
"text": "Want some more help figuring out complex chart configurations? You are in luck! I have some friends who would love to help you out.",
@@ -17,8 +17,8 @@
},
{
"style": "Important",
"text": "This tutorial requires starting with a fresh Plugin Weak-hands Buster v2 workspace. So, unless you loaded the plugin workspace right before starting, please select it from the workspace panel on the right and come back to me after the workspace loads — just click Resume on my menu!",
"updated": 1617181586756
"text": "This tutorial requires starting with a fresh Plugin Weak-hands Buster v2 workspace. So, unless you loaded the plugin workspace right before starting, please select it from the workspace panel on the left and come back to me after the workspace loads — just click Resume on my menu!",
"updated": 1621627499351
}
]
}
@@ -131,6 +131,7 @@ function newSuperalgosTutorialSpace() {
}
keyPressed()
toggleMapView()
checkPressButton()
checkGif()
checkImage()
@@ -162,6 +163,20 @@ function newSuperalgosTutorialSpace() {
}
}
function toggleMapView() {
if (currentNode === undefined) { return }
let config = JSON.parse(currentNode.config)
if (
config.toggleMapView !== undefined
) {
if (config.toggleMapView.view === "On") {
UI.projects.superalgos.spaces.floatingSpace.inMapMode = true
} else
if (config.toggleMapView.view === "Off") {
UI.projects.superalgos.spaces.floatingSpace.inMapMode = false
}
}
}
function checkViewportZoom() {
if (currentNode === undefined) { return }
let config = JSON.parse(currentNode.config)
@@ -810,7 +825,7 @@ function newSuperalgosTutorialSpace() {
resetDocumentation()
resetRepositionAtTimeMachine()
resetPositionAtNode()
resetTimeMachineKeyPressed()
resetTimeMachineKeyPressed()
resetKeyPressed()
resetSlider()
changeNodeConfig()