Merge pull request #593 from 9808us/develop

Tutorial and Workspace Hello World
This commit is contained in:
Luis Fernando Molina authored and GitHub committed 2021-02-26 12:16:35 +01:00
commit 8ae0743138
20 files changed
+624 -1

No files matched your search

@@ -1 +0,0 @@
{"type":"Workspace","name":"Hello World Strategy","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":"Sparta","project":"Superalgos","taskManagers":[{"type":"Task Manager","name":"Sparta","project":"Superalgos","tasks":[{"type":"Task","name":"Simple Moving Average (SMA)","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Simple Moving Average (SMA)","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Simple Moving Average (SMA) Multi-Period-Market","project":"Superalgos","id":"fde9aeb6-2b65-4ba5-a8b3-07f2b189a9ec","savedPayload":{"position":{"x":23310.348760844034,"y":29310.042580543206},"targetPosition":{"x":23600.126508730755,"y":29387.688294073963},"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":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"Simple Moving Average (SMA) Multi-Period-Daily","project":"Superalgos","id":"17d24742-6026-4fe5-b400-69df5a057aa1","savedPayload":{"position":{"x":23387.99447437479,"y":29175.556259718},"targetPosition":{"x":23600.126508730755,"y":29387.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"a773898a-8b8f-4654-b907-a4f0b988d59e","savedPayload":{"position":{"x":23600.126508730755,"y":29387.688294073963},"targetPosition":{"x":23859.934129866087,"y":29537.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a98d1697-98c9-44dc-a4b2-b777917ca292","savedPayload":{"position":{"x":23859.934129866087,"y":29537.688294073963},"targetPosition":{"x":24119.74175100142,"y":29687.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"802f1ee2-1dba-4999-8b29-068b68aee9ef","savedPayload":{"position":{"x":24119.74175100142,"y":29687.688294073963},"targetPosition":{"x":24379.549372136753,"y":29837.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d24c01eb-3d21-430e-a965-cbf645bb7853","savedPayload":{"position":{"x":24379.549372136753,"y":29837.688294073963},"targetPosition":{"x":24639.356993272086,"y":29987.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Sparta","id":"9cfffc48-486a-48cb-b641-98c82e314d3a"}}},{"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":"9de8a5c8-7c2e-4625-afa4-176c43777eb3","savedPayload":{"position":{"x":24002.960890204195,"y":28751.292191006072},"targetPosition":{"x":24215.09292456016,"y":28963.424225362036},"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":"d96308e3-a9ae-4a87-ad7c-cf7948fe0939","savedPayload":{"position":{"x":24215.09292456016,"y":28963.424225362036},"targetPosition":{"x":24427.224958916122,"y":29175.556259718},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fa7991b3-e23e-4c27Line truncated
@@ -0,0 +1 @@
{"type":"Workspace","name":"Hello World Tutorial","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":"Sparta","project":"Superalgos","taskManagers":[{"type":"Task Manager","name":"Sparta","project":"Superalgos","tasks":[{"type":"Task","name":"Simple Moving Average (SMA)","project":"Superalgos","bot":{"type":"Indicator Bot Instance","name":"Simple Moving Average (SMA)","project":"Superalgos","processes":[{"type":"Indicator Process Instance","name":"Simple Moving Average (SMA) Multi-Period-Market","project":"Superalgos","id":"fde9aeb6-2b65-4ba5-a8b3-07f2b189a9ec","savedPayload":{"position":{"x":23969.74175100142,"y":29687.688294073963},"targetPosition":{"x":24119.74175100142,"y":29687.688294073963},"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":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"Simple Moving Average (SMA) Multi-Period-Daily","project":"Superalgos","id":"17d24742-6026-4fe5-b400-69df5a057aa1","savedPayload":{"position":{"x":24044.74175100142,"y":29557.784483506297},"targetPosition":{"x":24119.74175100142,"y":29687.688294073963},"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":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"a773898a-8b8f-4654-b907-a4f0b988d59e","savedPayload":{"position":{"x":24119.74175100142,"y":29687.688294073963},"targetPosition":{"x":24249.645561569087,"y":29762.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"a98d1697-98c9-44dc-a4b2-b777917ca292","savedPayload":{"position":{"x":24249.645561569087,"y":29762.688294073963},"targetPosition":{"x":24379.549372136753,"y":29837.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"802f1ee2-1dba-4999-8b29-068b68aee9ef","savedPayload":{"position":{"x":24379.549372136753,"y":29837.688294073963},"targetPosition":{"x":24509.45318270442,"y":29912.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"d24c01eb-3d21-430e-a965-cbf645bb7853","savedPayload":{"position":{"x":24509.45318270442,"y":29912.688294073963},"targetPosition":{"x":24639.356993272086,"y":29987.688294073963},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mine","name":"Sparta","id":"9cfffc48-486a-48cb-b641-98c82e314d3a"}}},{"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":"9de8a5c8-7c2e-4625-afa4-176c43777eb3","savedPayload":{"position":{"x":24414.356993272086,"y":29297.976862370964},"targetPosition":{"x":24489.356993272086,"y":29427.88067293863},"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":"d96308e3-a9ae-4a87-ad7c-cf7948fe0939","savedPayload":{"position":{"x":24489.356993272086,"y":29427.88067293863},"targetPosition":{"x":24564.356993272086,"y":29557.784483506297},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"fa7991b3-e23e-4cLine truncated
@@ -0,0 +1,42 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 1,
"type": "Tutorial Step - Welcome",
"definition": {
"text": "Let’s build the mother of all trading strategies: The Moving Average Cross!",
"icon": {
"name": "tutorial",
"project": "Superalgos"
},
"updated": 1614275495850
},
"paragraphs": [
{
"style": "Text",
"text": "For this tutorial I assume that",
"updated": 1614240501976
},
{
"style": "List",
"text": "You have done the Welcome Tutorial in the Getting Started Workspace"
},
{
"style": "List",
"text": "You are comfortable moving around the Workspace and the Charts"
},
{
"style": "List",
"text": "You have a basic understanding about what is a Trading Bot and a strategy",
"updated": 1614275543824
},
{
"style": "Note",
"text": "We will build a bot to backtest a strategy based on Simple Moving Average Cross between SMA50 and SMA200 on 4H TF. A classic!",
"updated": 1614242374513
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,29 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 2,
"type": "Tutorial Step - Look around",
"definition": {
"text": "Workspaces can be changed!",
"updated": 1614241100778,
"icon": {
"name": "layer",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "I arranged the workspace in a slightly different way compared to Getting Started. It's a good practice to customize the workspace to keep it tidy and clean. Remember that every hierarchy, node or offspring can impact on your machine resources.",
"updated": 1614241304126
},
{
"style": "Success",
"text": "Have a look around, right click on empty space and explore the Workspace I arranged for you!",
"updated": 1614334045360
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,32 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 3,
"type": "Tutorial Step - Custom Data Mine",
"definition": {
"text": "Not only Workspaces can be modified",
"icon": {
"name": "data-mine",
"project": "Superalgos"
},
"updated": 1614241455319
},
"paragraphs": [
{
"style": "Text",
"text": "SA is very modular and can be arranged the way we prefer for our needs.",
"updated": 1614241605095
},
{
"style": "Text",
"text": "I prepared for you a very basic Workspace with a new Data Mine and arranged the nodes deleting all I don't need for this tutorial."
},
{
"style": "Success",
"text": "In SA data mines can be added and removed but the data saved on your hard disk will not be deleted if you remove an indicator!"
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,40 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 4,
"type": "Tutorial Step - The Strategy",
"definition": {
"text": "Let's build the mother of all strategies!",
"icon": {
"name": "strategy",
"project": "Superalgos"
},
"updated": 1614241902261
},
"paragraphs": [
{
"style": "Text",
"text": "To backtest a strategy, first we need to write it or to have it clearly in our mind. So these are the cornerstones on which our test is based:",
"updated": 1614242397042
},
{
"style": "List",
"text": "Strategy uses SMA50 and SMA200"
},
{
"style": "List",
"text": "Strategy is based on 4H TF"
},
{
"style": "List",
"text": "Bot will buy the asset when SMA50 cross up SMA200"
},
{
"style": "List",
"text": "Stop Loss is set at 20% from entry"
},
{
"style": "List",
"text": "Take Profit is set at 100% or on SMA50 cross down SMA200"
}
]
}
@@ -0,0 +1,38 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 5,
"type": "Tutorial Step - Trading System",
"definition": {
"text": "Trading System is already set up. Let's have a look!",
"icon": {
"name": "trading-system-reference",
"project": "Superalgos"
},
"updated": 1614242955916
},
"paragraphs": [
{
"style": "Text",
"text": "The strategy is already deployed. So let's have a look around to understand it!",
"updated": 1614243171735
},
{
"style": "Text",
"text": "As you cand see, a Trading System has 2 main offsprings:"
},
{
"style": "List",
"text": "Dynamic Indicators: This lets you build On-The-Fly indicators",
"updated": 1614243245995
},
{
"style": "List",
"text": "Trading Strategy: Is where we define parameters, conditions and formulas for our strategy",
"updated": 1614243343779
},
{
"style": "Success",
"text": "This tutorial doesn't cover definitions or concepts used in SA. This tutorial is only about how to deploy a strategy!"
}
]
}
@@ -0,0 +1,29 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 6,
"type": "Tutorial Step - Trigger Stage",
"definition": {
"text": "Trigger Stage is a our Talent Scout",
"icon": {
"name": "trigger-stage",
"project": "Superalgos"
},
"updated": 1614243745480
},
"paragraphs": [
{
"style": "Text",
"text": "Our strategy is based on SMA cross and it is in this node that we can instruct the bot to search for conditions that have to be met in order to take a trade.",
"updated": 1614243969544
},
{
"style": "Important",
"text": "This stage is all about checking the market and deciding if some conditions are worth a trade or not!"
},
{
"style": "Text",
"text": "Let's have a look at its 3 offsprings and I show you some little tricks to implement the strategy in the fastest possible way!",
"updated": 1614244059064
}
]
}
@@ -0,0 +1,56 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 7,
"type": "Tutorial Step - Trigger On",
"definition": {
"text": "Reserve some funds!",
"icon": {
"name": "trigger-on",
"project": "Superalgos"
},
"updated": 1614244953169
},
"paragraphs": [
{
"style": "Text",
"text": "Trigger On event is about reserving (locking) your funds and making them available to the bot.",
"updated": 1614244945700
},
{
"style": "Text",
"text": ""
},
{
"style": "Text",
"text": "What I need to do is:"
},
{
"style": "List",
"text": "Define the TF"
},
{
"style": "List",
"text": "Define the SMA50/200 cross"
},
{
"style": "Text",
"text": "To define a cross I use 2 conditions:"
},
{
"style": "Javascript",
"text": "chart.at04hs.popularSMA.sma50 > chart.at04hs.popularSMA.sma200"
},
{
"style": "Javascript",
"text": "chart.at04hs.popularSMA.previous.sma50 < chart.at04hs.popularSMA.previous.sma200"
},
{
"style": "Text",
"text": ""
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,25 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 8,
"type": "Tutorial Step - Trigger Off",
"definition": {
"text": "If you do not need a condition just set it to False or True!",
"icon": {
"name": "trigger-off",
"project": "Superalgos"
},
"updated": 1614333368044
},
"paragraphs": [
{
"style": "Text",
"text": "For my backtest I don't need a Trigger Off condition so I just write false in Javascript code",
"updated": 1614334212315
},
{
"style": "Success",
"text": "Remember that Conditions can be only True or False. When I write some Javascript code inside these type of nodes, they must evaluate True or False because essentially what I'm writing is a test.",
"updated": 1614245807894
}
]
}
@@ -0,0 +1,28 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 9,
"type": "Tutorial Step - Take Position",
"definition": {
"text": "Time to take Position!",
"icon": {
"name": "take-position",
"project": "Superalgos"
},
"updated": 1614246263376
},
"paragraphs": [
{
"style": "Text",
"text": "In this node I use the same trick used for the Trigger Off Event but in this case forcing it to True. I already defined in the Trigger On Event what are my conditions. So in this node I can just copy the two conditions or set it to True.",
"updated": 1614260289104
},
{
"style": "Success",
"text": "Of course if I need more conditions I can add or modify them as per my needs!"
},
{
"style": "Note",
"text": "Cool. My initial definitions are set. It's time to move to the Open Stage!"
}
]
}
@@ -0,0 +1,25 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 10,
"type": "Tutorial Step - Open Stage",
"definition": {
"text": "The Open Stage is where bot take position!",
"icon": {
"name": "open-stage",
"project": "Superalgos"
},
"updated": 1614260398081
},
"paragraphs": [
{
"style": "Text",
"text": "The strategy I want to backtest is based on 4h TF and the strategy is Long. This means that bot will Buy the asset to later Sell it (at a better price we hope!). To keep things simple, all I have to do is to indicate the TF in the Target Rate node using my full balance in the Target Size in Quoted Asset.",
"updated": 1614333476016
},
{
"style": "Success",
"text": "If our market is BTC/USDT then the Quoted Asset is USDT and Base Assest is BTC",
"updated": 1614260724325
}
]
}
@@ -0,0 +1,39 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 11,
"type": "Tutorial Step - Manage Stage",
"definition": {
"text": "The Manage Stage is where the bot check if it has to Take Profit or a Stop Loss",
"icon": {
"name": "manage-stage",
"project": "Superalgos"
},
"updated": 1614261028631
},
"paragraphs": [
{
"style": "Text",
"text": "In this stage bot check if the price has hit Take Profit (TP) or Stop Loss (SL). Initial conditions for my strategy was to set a SL at 20% from entry and a TP at 100% or when MA50 cross under MA200.",
"updated": 1614333590591
},
{
"style": "Text",
"text": "Stop Loss formula:",
"updated": 1614333601220
},
{
"style": "Javascript",
"text": "tradingEngine.tradingCurrent.position.entryTargetRate.value * 0.8",
"updated": 1614261430746
},
{
"style": "Text",
"text": "Take Profit formula is a little bit more elaborate:",
"updated": 1614333616750
},
{
"style": "Javascript",
"text": "if (chart.at04hs.popularSMA.sma50 > chart.at04hs.popularSMA.sma200) {tradingEngine.tradingCurrent.position.entryTargetRate.value * 2} else {chart.at04hs.candle.close}"
}
]
}
@@ -0,0 +1,32 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 12,
"type": "Tutorial Step - Close Stage",
"definition": {
"text": "The Close Stage is in charge of closing the trade",
"icon": {
"name": "close-stage",
"project": "Superalgos"
},
"updated": 1614261551174
},
"paragraphs": [
{
"style": "Text",
"text": "In the previous stage (the Manage Stage) bot is checking if the current price has hit the SL or the TP. Once one of these two events has been hit, then the Close Stage take charge of closing the trade. The way it works is very similar to the Open Stage. Bot need to know at what candle should look",
"updated": 1614261954345
},
{
"style": "Javascript",
"text": "chart.at04hs.candle.close"
},
{
"style": "Text",
"text": "And obviously as opposed to the Open Stage, here we Sell the asset so we need a Market Sell Order and what bot sells is the Quoted asset"
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 13,
"type": "Tutorial Step - That's it",
"definition": {
"text": "Strategy is defined!",
"icon": {
"name": "announcement",
"project": "Superalgos"
},
"updated": 1614262144926
},
"paragraphs": [
{
"style": "Text",
"text": "As you have seen, implementing a simple strategy is a matter of few lines of code!",
"updated": 1614262171702
},
{
"style": "Success",
"text": "Keep this in mind to deal correctly with Base and Quoted Asset. Base is on top, Quoted is at bottom! So in our case BTC/USD we have BTC is the Base Asset while USDT is the Quoted Asset",
"updated": 1614262277141
},
{
"style": "Warning",
"text": "It doesn't change if you go Short. If strategy is Short then in the Open Stage bot will sell the Base Asset and later buy it back using Quoted Asset!",
"updated": 1614262348272
}
]
}
@@ -0,0 +1,30 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 14,
"type": "Tutorial Step - Update Data Mines",
"definition": {
"text": "Chances are you already have some data mined!",
"icon": {
"name": "data-tasks",
"project": "Superalgos"
},
"updated": 1614267263084
},
"paragraphs": [
{
"style": "Text",
"text": "If you have done the intro Tutorial then probably you already have mined some data. But I added a new indicator that is not present in the initial configuration. So please Run the data Mines and wait until they are 100% ready.",
"updated": 1614267281564
},
{
"style": "Important",
"text": "Make sure that under Sparta Data Mine Tasks the newly added indicator Simple Moving Average is 100% updated.",
"updated": 1614267364900
},
{
"style": "Success",
"text": "Once all indicators are 100% you can stop the data mines and save resources for the backtest",
"updated": 1614267400047
}
]
}
@@ -0,0 +1,38 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 15,
"type": "Tutorial Step - Backtest",
"definition": {
"text": "Make sure Parameters are in place!",
"updated": 1614267651634,
"icon": {
"name": "backtesting-session",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "Before runnin the backtest, make sure that the Trading Parameters node has consistent data. I already prepared everything for you, but take some time and notice that:",
"updated": 1614267828443
},
{
"style": "List",
"text": "Session Base Asset is set to 0"
},
{
"style": "List",
"text": "Session Quoted Asset is set to 1000 (That is 1000$USDT in this case)"
},
{
"style": "List",
"text": "Slippage is set to 0 because I'm backtesting small amounts and I can assume orders are filled with no slippage",
"updated": 1614267847410
},
{
"style": "Important",
"text": "Are you ready? Run the backtest!",
"updated": 1614267899321
}
]
}
@@ -0,0 +1,28 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 16,
"type": "Tutorial Step - Final Step",
"definition": {
"text": "Time to look at the chart!",
"updated": 1614268141398,
"icon": {
"name": "stop",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "When backtest finishes I stop the whole hierarchy form the Testing Trading Tasks node. Expand the node and click on Stop All.",
"updated": 1614268732305
},
{
"style": "Success",
"text": "Remember that it's good practice to keep hierarchies collapsed and to stop unuseful tasks to save resources!"
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,49 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 17,
"type": "Tutorial Step - The Chart",
"definition": {
"text": "Enjoy you backtest!",
"icon": {
"name": "charting-space",
"project": "Superalgos"
},
"updated": 1614269880685
},
"paragraphs": [
{
"style": "Text",
"text": "Now it's time to move to the Charting Space and (if not already running) fire up:",
"updated": 1614269938039
},
{
"style": "List",
"text": "Episodes",
"updated": 1614269968163
},
{
"style": "List",
"text": "Strategies",
"updated": 1614269964528
},
{
"style": "List",
"text": "Market",
"updated": 1614269960052
},
{
"style": "List",
"text": "Buy and Sell Market Orders",
"updated": 1614269946923
},
{
"style": "List",
"text": "Position Quoted Asset"
},
{
"style": "Success",
"text": "Take your time and explore the visual results. Apply the SMA indicator to the chart and make sure bot has taken position when expected",
"updated": 1614333706446
}
]
}
@@ -0,0 +1,33 @@
{
"tutorial": "Hello World Tutorial",
"pageNumber": 18,
"type": "Tutorial Step - The End",
"definition": {
"text": "This is the final step in this tutorial but a first big step for you!",
"updated": 1614270786500,
"icon": {
"name": "hits",
"project": "Superalgos"
}
},
"paragraphs": [
{
"style": "Text",
"text": "Now that you have seen how fast and easy is to deploy simple strategies in SA, I leave you with some hints you can explore.",
"updated": 1614270919320
},
{
"style": "Text",
"text": "Maybe you can add a new indicator and use its properties like an additional filter for the Trigger Stage"
},
{
"style": "Text",
"text": "Or you can modify the SL so to have a trailing one istead of being fixed."
},
{
"style": "Note",
"text": "Thank you for your time. You can read a more in depth article here: http://bit.ly/9808usHelloWorld",
"updated": 1614271289324
}
]
}