Merge pull request #739 from julian-molina/develop

Contribution: Contributing tutorial
This commit is contained in:
Julian Molina authored and GitHub committed 2021-03-29 20:15:07 +02:00
commit 46898a348c
52 files changed
+723 -45

No files matched your search

@@ -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
@@ -16,7 +16,8 @@
},
{
"style": "Success",
"text": "To do a tutorial, load the corresponding plugin workspace, find the tutorial at the bottom of the design space, and select Run on the menu."
"text": "To do a tutorial, load the corresponding plugin workspace, find the tutorial at the bottom of the design space, and select Play on the menu.",
"updated": 1617036749800
},
{
"style": "Text",
@@ -24,7 +25,8 @@
},
{
"style": "Text",
"text": "The recommended order is given by the list of chapters below, but the truth is doing all tutorials is what matters, regardless of the order."
"text": "The recommended order is given by the list below, but the truth is doing all tutorials is what matters, regardless of the order.",
"updated": 1617036785768
},
{
"style": "Title",
@@ -0,0 +1,21 @@
{
"topic": "Contributing to Superalgos",
"pageNumber": 1,
"type": "How to Contribute to Superalgos",
"definition": {
"text": "This topic covers the logistics and details of how to contribute different kinds of assets to the project, including a Trading System, a Data Mine, icons, documentation, translations, and so on.",
"updated": 1617032255373
},
"paragraphs": [
{
"style": "Text",
"text": "Scan the table of contents below to find the documentation about how to contribute the kind of asset you may have in mind.",
"updated": 1617032405931
},
{
"style": "Success",
"text": "If there is no explanation about the type of asset you wish to contribute, please reach out to the team in the Superalgos Community Group!",
"updated": 1617032427271
}
]
}
@@ -1,6 +1,6 @@
{
"topic": "Contributing to Superalgos",
"pageNumber": "1",
"pageNumber": 2,
"type": "How to Contribute a Trading System",
"definition": {
"text": "To contribute a Trading System, you must provide the trading system file, a clean workspace, and proper documentation.",
@@ -1,6 +1,6 @@
{
"topic": "Contributing to Superalgos",
"pageNumber": "2",
"pageNumber": 3,
"type": "How to Contribute Icons",
"definition": {
"text": "Superalgos' visual interface features hundreds of icons and many more icons are required with each release, as new functionality is rolled out. Designing icons is a great way to leave your mark, as it puts your work directly in front of every user!",
@@ -1,6 +1,6 @@
{
"topic": "Contributing to Superalgos",
"pageNumber": "3",
"pageNumber": 4,
"type": "How to Contribute to the Docs",
"definition": {
"text": "Helping with keeping the Docs up to date, improving the delivery of the information, expanding on explanations, or simply fixing typos and grammar mistakes makes for a better user experience and lowers entry barriers for new users.",
@@ -1,6 +1,6 @@
{
"topic": "Contributing to Superalgos",
"pageNumber": "4",
"pageNumber": 5,
"type": "How to Contribute Translations",
"definition": {
"text": "The Docs are originally written in English. Making Superalgos more accessible is a key endeavor to grow the Community and the user base. Translating tutorials and software documentation into languages other than English is of huge value!",
@@ -0,0 +1,28 @@
{
"tutorial": "Basic Education",
"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!",
"icon": {
"name": "share-entity",
"project": "Superalgos"
},
"updated": 1617037759268
},
"paragraphs": [
{
"style": "Text",
"text": "Get used to share Shares! This good practice will help you avoid dangerous mistakes in the future!",
"updated": 1617037960260
},
{
"style": "Callout",
"text": "Read the page about Shares for more info!"
},
{
"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!"
}
]
}
@@ -0,0 +1,34 @@
{
"tutorial": "Basic Education",
"pageNumber": 38,
"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
}
]
}
@@ -0,0 +1,38 @@
{
"tutorial": "Basic Education",
"pageNumber": 39,
"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": ""
}
]
}
@@ -0,0 +1,35 @@
{
"tutorial": "Basic Education",
"pageNumber": 40,
"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
}
]
}
@@ -0,0 +1,38 @@
{
"tutorial": "Basic Education",
"pageNumber": 41,
"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": ""
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 42,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 43,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 44,
"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
}
]
}
@@ -0,0 +1,25 @@
{
"tutorial": "Basic Education",
"pageNumber": 45,
"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
}
]
}
@@ -0,0 +1,25 @@
{
"tutorial": "Basic Education",
"pageNumber": 46,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 47,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 48,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 49,
"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
}
]
}
@@ -0,0 +1,29 @@
{
"tutorial": "Basic Education",
"pageNumber": 50,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 51,
"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
}
]
}
@@ -0,0 +1,25 @@
{
"tutorial": "Basic Education",
"pageNumber": 52,
"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
}
]
}
@@ -0,0 +1,29 @@
{
"tutorial": "Basic Education",
"pageNumber": 53,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 54,
"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
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Basic Education",
"pageNumber": 55,
"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
}
]
}
@@ -0,0 +1,28 @@
{
"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
},
"paragraphs": [
{
"style": "Text",
"text": "Get used to share Shares! This good practice will help you avoid dangerous mistakes in the future!",
"updated": 1617037960260
},
{
"style": "Callout",
"text": "Read the page about Shares for more info!"
},
{
"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!"
}
]
}
@@ -18,13 +18,13 @@
},
{
"style": "Note",
"text": "The skills you will learn will also allow you to start contributing to the project! Remember, this is a community project... We are all expected to give back and keep improving the software!",
"updated": 1616871682807
"text": "The skills you will learn will also allow you to start contributing to the project! Remember, this is a community project... We are all expected to give back and help improve the software!",
"updated": 1617034994342
},
{
"style": "Success",
"text": "By the way, contributing to the project earns you Superalgos (SA) tokens!",
"updated": 1616871695678
"style": "Link",
"text": "By the way, contributing to the project earns you Superalgos (SA) tokens! Click to learn more!->superalgos.org/token-overview.shtml",
"updated": 1617035100951
}
]
}
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.2",
"pageNumber": 8,
"type": "Tutorial Step - Switching Branches",
"definition": {
"text": "The master branch in the Superalgos repo features the latest stable version, while the develop branch features the version in development!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.3",
"pageNumber": 9,
"type": "Tutorial Step - Now the Current Branch",
"definition": {
"text": "If everything went well, you must have got a confirmation that the Contributions Branch was changed! Awesome!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.32",
"pageNumber": 10,
"type": "Tutorial Step - Before You Switch",
"definition": {
"text": "There are a few things you should consider every time you switch branches! Let's go through a quick list bfore you proceed!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.34",
"pageNumber": 11,
"type": "Tutorial Step - Double Trouble?",
"definition": {
"text": "Many users choose to run the two branches from separate folders! This seems like a sensible solution for active contributors!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.36",
"pageNumber": 12,
"type": "Tutorial Step - Let's Switch Already!",
"definition": {
"text": "Now that everything's clear, let's do the switch and get ready for what comes next!",
@@ -23,21 +23,18 @@
},
{
"style": "List",
"text": "You will get a page explaining what is being done. Once the process finishes, you will get another page telling you of the outcome.",
"updated": 1617019740630
"text": "You will get a page explaining what is being done. Then you will get another page telling you of the outcome explaining you must restart the app.",
"updated": 1617036253283
},
{
"style": "List",
"text": "Stop / close the app (browser and console).",
"updated": 1617019826262
"text": "Do close the app and restart it (browser & console).",
"updated": 1617036149007
},
{
"style": "List",
"text": "Restart the app!"
},
{
"style": "List",
"text": "Find the Contribute to Superalgos Tutorial in the bottom-right corner of the workspace and select Resume in the menu!"
"text": "Find the Contribute to Superalgos Tutorial in the bottom-right corner of the workspace and select Resume on the menu! If Resume doesn't work, find the Welcome Back! step under the Branches Topic and click Play on the menu!",
"updated": 1617036301673
}
]
}
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.4",
"pageNumber": 13,
"type": "Tutorial Step - Welcome Back!",
"definition": {
"text": "If you followed my instructions to the letter, you should now be running the software in the develop branch! Awesome!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "7.5",
"pageNumber": 14,
"type": "Tutorial Step - Update the App!",
"definition": {
"text": "The App Update Command fetches the latest version of the software from the upstream repository in the Current Branch!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 8,
"pageNumber": 15,
"type": "Tutorial Step - Let's Add Your Review!",
"definition": {
"text": "In this step, you are going to run your first command to create a review page! This page will be yours to edit in the future!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 9,
"pageNumber": 16,
"type": "Tutorial Step - Did It Work?",
"definition": {
"text": "If you didn't mess up the command, you should get a new page with the title you set, an invitation to write a summary, and more instructions below!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "9.2",
"pageNumber": 17,
"type": "Tutorial Step - Breaking Up The Command",
"definition": {
"text": "Before you get on with writting your awesome review, let me parse the command so that you understand what you just did!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "9.4",
"pageNumber": 18,
"type": "Tutorial Step - Editing Crash Course",
"definition": {
"text": "I'll give you a few pointers on how to edit the page! Right-click on a paragraph to get the styles menu. The pencil starts edit mode...",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 10,
"pageNumber": 19,
"type": "Tutorial Step - Don't Forget to Sign!",
"definition": {
"text": "These comments about your first impressions on Superalgos are your first contribution, and for that we thank you!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 11,
"pageNumber": 20,
"type": "Tutorial Step - Don't Forget to Save!",
"definition": {
"text": "Before you get to a novel-length kind of write-up, make sure you save the page every once in a while! No need to risk your prose!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 12,
"pageNumber": 21,
"type": "Tutorial Step - Get Ready to Push!",
"definition": {
"text": "Amazing! You learned to add a page to the Docs, edit it, and save it! Now you've got to make it transcend your PC, and contribute it to Superalgos!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 13,
"pageNumber": 22,
"type": "Tutorial Step - Translation for Mere Mortals",
"definition": {
"text": "If you are not a developer or are not familiar with Git or GitHub, the previous step probably sounded like gibberish! I know!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 14,
"pageNumber": 23,
"type": "Tutorial Step - GitHub.com Authentication",
"definition": {
"text": "For the app.contribute command to work, you need to authenticate at two different levels. We'll deal with GiHub.com first!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 15,
"pageNumber": 24,
"type": "Tutorial Step - GitHub.com Auth Clip",
"definition": {
"text": "Write here a summary for this tutorial page."
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 16,
"pageNumber": 25,
"type": "Tutorial Step - Set Up the Token!",
"definition": {
"text": "After you hit the Generate Token button, you'll get your precious token! Don't leave the page as you won't ever see it again!",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 17,
"pageNumber": 26,
"type": "Tutorial Step - A Note On Keys and Tokens!",
"definition": {
"text": "Let me make a quick pause to point out something important regarding the safety of your keys and tokens...",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 18,
"pageNumber": 27,
"type": "Tutorial Step - Contributable files?",
"definition": {
"text": "Most files within the Superalgos folder are subject to be modified and contributed to the project! That includes code, images, documentation, etc.",
@@ -1,6 +1,6 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 19,
"pageNumber": 28,
"type": "Tutorial Step - Let's Run the Command!",
"definition": {
"text": "Let's get on with the task at hand! Copy the command below, paste it on the search/command box, and hit Enter!",
@@ -1,10 +1,10 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": 20,
"pageNumber": 29,
"type": "Tutorial Step - Congrats and Thank You!",
"definition": {
"text": "This is awesome! You are already helping the project! We are grateful for your first contribution and hope for more to come!",
"updated": 1611595200232,
"text": "This is awesome! You are already helping the project! We are grateful for your first contribution and hope there's more to come!",
"updated": 1617031656299,
"icon": {
"name": "docs-success-style",
"project": "Superalgos"
@@ -0,0 +1,25 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "30",
"type": "Tutorial Step - More on Contributions",
"definition": {
"text": "I can't stress enough how important it is for the project that users contribute whatever they build with Superalgos!",
"icon": {
"name": "execution-algorithm",
"project": "Superalgos"
},
"updated": 1617033287328
},
"paragraphs": [
{
"style": "Text",
"text": "If you choose to get involved with the project and the Community, you may participate in the collective effort to make Superalgos better. But even if you are not interested in team work, you will still develop your skills, become a power user, and build many things that may be of use to people coming after you!",
"updated": 1617033959946
},
{
"style": "Success",
"text": "How to Contribute to Superalgos is the topic that covers the logistics on how to contribute trading systems, data mines, icons, documentation, translations, and so on. Remember: all contributions are incentived with Superalgos tokens!",
"updated": 1617034022307
}
]
}
@@ -0,0 +1,29 @@
{
"tutorial": "Contribute to Superalgos!",
"pageNumber": "31",
"type": "Tutorial Step - A Book on Tutorials",
"definition": {
"text": "Congratulations! You reached the end of another tutorial! I hope you feel that you're starting to grasp how Superalgos works!",
"icon": {
"name": "scripts-library",
"project": "Superalgos"
},
"updated": 1617034361694
},
"paragraphs": [
{
"style": "Text",
"text": "Let's talk about what comes next! The page I just opened is the First Steps Tutorials book. From now on, you're free to choose what tutorials to do next!",
"updated": 1617034497284
},
{
"style": "Callout",
"text": "Take a look at the list of tutorials available on each of the Plugin Worspaces and choose which one to do next! I believe the order in the list may be appropriate, but it probably depends on your interests, so I'll leave it up to you!",
"updated": 1617034816159
},
{
"style": "Success",
"text": "See you on the next tutorial!"
}
]
}