Merge pull request #512 from Superalgos/develop

Beta 8 SP 3
This commit is contained in:
Luis Fernando Molina authored and GitHub committed 2021-01-30 09:38:12 +01:00
commit 3bdd1ea81d
201 files changed
+6639 -469

No files matched your search

+33 -3
View File
@@ -121,7 +121,7 @@ cursor: pointer;
.docs-tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dashed #0295aa;
border-bottom: 1px dashed #999;
cursor: pointer;
line-height: inherit;
}
@@ -564,9 +564,9 @@ margin: 0 0 0 15px;
code.docs-code {
color: #d9534f;
background-color: rgba(230, 234, 234, 1);
background-color: rgba(230, 234, 234, .5);
/* border: 1px solid rgba(205, 212, 213, 0.5); DELETE Candidate*/
border: 1px solid rgba(54, 85, 88, .3);
border: 1px solid rgba(54, 85, 88, .1);
border-radius: 3px;
padding: 0 5;
}
@@ -882,6 +882,36 @@ text-decoration: underline;
cursor: pointer;
}
.docs-search-result-content-record-topic {
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-tutorial {
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-review {
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-topic {
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-tutorial {
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-review {
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-title {
font-size: 120%;
font-weight: 500;
+2 -2
View File
@@ -56,7 +56,7 @@
onresize="onResize()">
<div id="contributors" class="credits">
<p id="credits-page-status-paragraph" class="credits-yellow">The UI is loading...</p>
<p>Superalgos is <span class="credits-red">free</span> and <span class="credits-red">open-source</span>, and is
<p>Superalgos is and will always be <span class="credits-red">free</span> and <span class="credits-red">open-source</span>, and is
<span class="credits-red">constantly improving</span> thanks to the involvement of contributors:</p>
<p>Luis Fernando Molina, Julian Molina, Andreja Cobeljic, Matías Benitez, Ira Miller, Eduardo Remis,
Jeff Braun, rico4dev, 9808us, Barry Low, Nikola Bjelogrlic, Hirajin Koizuko, Francisco J. Santillán, Norman,
@@ -65,7 +65,7 @@
Diego M., CarnivalBen,
Sebastian E., Bogdan P., Marko V., Igor S., Niksa K., Rodrigo M., Nicanor M., Alejandro P., Mateo H., Lan
T., Leon A., Uroš R., Filip M., Vladimir J. and Pavle B.</p>
<p><span class="credits-red">With Superalgos Beta 8, contributing is easier than ever! Become a contributor!</span></p>
<p>Thanks for giving a <span class="credits-red">star</span> to the project's <span class="credits-red">repo at GitHub.com</span>. This help other devs to find it.</p>
</div>
<div id="masterApp"></div>
<div id="canvasApp"></div>
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

@@ -1 +1 @@
{"type":"Trading Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","project":"Superalgos","tradingBots":[{"type":"Trading Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Trading","config":"{\n \"codeName\": \"Trading\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Trading-Process\"\n }\n }","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Trading Engine","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Episode","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Episode Counters","project":"Superalgos","id":"ec8d74ba-a4ad-417a-b479-6bae95b8a1fe","savedPayload":{"position":{"x":24910.97457254189,"y":18457.46644293786},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3ed03a02-381d-43fe-9faa-761728c53bd8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Counters","project":"Superalgos","id":"22b0af33-8c2f-4194-839b-affd18f298d5","savedPayload":{"position":{"x":24834.601232363748,"y":18490.07023931273},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15f5b150-f1cf-403c-8cb9-2c7c4e1db8e8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Statistics","project":"Superalgos","id":"23ab91ae-2e78-4993-bb69-855f69cef1ce","savedPayload":{"position":{"x":24753.53736157276,"y":18508.085329665024},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"fc9dc0f7-35e0-4548-bb91-f920825d694f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Statistics","project":"Superalgos","id":"d0a4515a-279d-4c27-8de2-168108861242","savedPayload":{"position":{"x":24670.543493063306,"y":18510.89823169951},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"91953362-8751-4440-a898-21245cd47c15"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","project":"Superalgos","id":"7fc80977-5b37-413e-8107-0a89a16e08b0","savedPayload":{"position":{"x":24588.445883487308,"y":18498.413155411115},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"17fb41f5-61b5-4433-9a10-950ff8216a7e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","project":"Superalgos","id":"a6888750-1043-420c-9253-633e1399c5e4","savedPayload":{"position":{"x":24510.040268473647,"y":18471.05526509864},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"bbc9467d-28bf-432b-9e49-582d1bcabfb9"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Balances","project":"Superalgos","id":"0ad114df-f076-4a86-8c62-4c4a146da73c","savedPayload":{"position":{"x":24437.996657204443,"y":18429.756200904503},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"acddff59-b51b-4b45-b58f-71d4077755ee"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Balances","project":"Superalgos","id":"04b51302-957d-4365-ad55-9f89d60e261c","savedPayload":{"position":{"x":24374.76840845468,"y":18375.922352927064},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFroLine truncated
{"type":"Trading Mine","name":"Masters","config":"{ \n\"codeName\": \"Masters\"\n}","project":"Superalgos","tradingBots":[{"type":"Trading Bot","name":"Low Frequency","config":"{\n\"codeName\": \"Low-Frequency\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Trading","config":"{\n \"codeName\": \"Trading\",\n \"sessionRunWaitTime\": 5000,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"Low-Frequency-Trading-Process\"\n }\n }","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Trading Engine","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[{"type":"Output Dataset Folder","name":"Episode","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Episode Counters","project":"Superalgos","id":"ec8d74ba-a4ad-417a-b479-6bae95b8a1fe","savedPayload":{"position":{"x":24910.97457254189,"y":18457.46644293786},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"3ed03a02-381d-43fe-9faa-761728c53bd8"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Counters","project":"Superalgos","id":"22b0af33-8c2f-4194-839b-affd18f298d5","savedPayload":{"position":{"x":24834.601232363748,"y":18490.07023931273},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"15f5b150-f1cf-403c-8cb9-2c7c4e1db8e8"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Statistics","project":"Superalgos","id":"23ab91ae-2e78-4993-bb69-855f69cef1ce","savedPayload":{"position":{"x":24753.53736157276,"y":18508.085329665024},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"fc9dc0f7-35e0-4548-bb91-f920825d694f"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Statistics","project":"Superalgos","id":"d0a4515a-279d-4c27-8de2-168108861242","savedPayload":{"position":{"x":24670.543493063306,"y":18510.89823169951},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"91953362-8751-4440-a898-21245cd47c15"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Candle","project":"Superalgos","id":"7fc80977-5b37-413e-8107-0a89a16e08b0","savedPayload":{"position":{"x":24588.445883487308,"y":18498.413155411115},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"17fb41f5-61b5-4433-9a10-950ff8216a7e"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Candle","project":"Superalgos","id":"a6888750-1043-420c-9253-633e1399c5e4","savedPayload":{"position":{"x":24510.040268473647,"y":18471.05526509864},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Daily","id":"bbc9467d-28bf-432b-9e49-582d1bcabfb9"}}},{"type":"Output Dataset","name":"Multi-Period-Market Episode Balances","project":"Superalgos","id":"0ad114df-f076-4a86-8c62-4c4a146da73c","savedPayload":{"position":{"x":24437.996657204443,"y":18429.756200904503},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"acddff59-b51b-4b45-b58f-71d4077755ee"}}},{"type":"Output Dataset","name":"Multi-Period-Daily Episode Balances","project":"Superalgos","id":"04b51302-957d-4365-ad55-9f89d60e261c","savedPayload":{"position":{"x":24374.76840845468,"y":18375.922352927064},"targetPosition":{"x":24696.86240363471,"y":18061.668541066385},"floatingObject":{"isPinned":false,"isFroLine truncated
@@ -2839,6 +2839,12 @@
"relatedUiObject": "Trading Parameters",
"actionFunction": "payload.executeAction"
},
{
"action": "Switch To Paper Trading",
"label": "Switch To Paper Trading",
"relatedUiObject": "Paper Trading Session",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
@@ -10093,6 +10099,12 @@
"relatedUiObject": "Trading Parameters",
"actionFunction": "payload.executeAction"
},
{
"action": "Switch To Backtesting",
"label": "Switch To Backtesting",
"relatedUiObject": "Backtesting Session",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
@@ -10194,6 +10206,12 @@
"relatedUiObject": "Trading Parameters",
"actionFunction": "payload.executeAction"
},
{
"action": "Switch To Live Trading",
"label": "Switch To Live Trading",
"relatedUiObject": "Live Trading Session",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
@@ -10321,6 +10339,12 @@
"relatedUiObject": "Trading Parameters",
"actionFunction": "payload.executeAction"
},
{
"action": "Switch To Forward Testing",
"label": "Switch To Forward Testing",
"relatedUiObject": "Forward Testing Session",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
@@ -0,0 +1,38 @@
{
"type": "Community Data Mines",
"definition": {
"text": "The Community Data Mines books is a compendium of data mines&mdash;and their indicators&mdash;contributed by the Community.",
"updated": 1611686533662
},
"paragraphs": [
{
"style": "Chapter",
"text": "I->Superalgos->Topic->Alpha Data Mine",
"updated": 1611686360926
},
{
"style": "Chapter",
"text": "II->Superalgos->Topic->Buddha Data Mine->",
"updated": 1611686389041
},
{
"style": "Chapter",
"text": "III->Superalgos->Topic->Masters Data Mine->",
"updated": 1611686401703
},
{
"style": "Chapter",
"text": "IV->Superalgos->Topic->Sparta Data Mine->",
"updated": 1611686413735
},
{
"style": "Chapter",
"text": "V->Superalgos->Topic->Zeus Data Mine->",
"updated": 1611686424488
},
{
"style": "Text",
"text": ""
}
]
}
@@ -85,9 +85,84 @@
"text": "Dummy",
"updated": 1610122641114
},
{
"style": "Title",
"text": "Read Whole Page Warning",
"updated": 1611675615893
},
{
"style": "Block",
"text": "Read Whole Page Warning",
"updated": 1611675626970
},
{
"style": "Warning",
"text": "Trading, trading with bots, and trading with Community-shared trading systems entail risks. Make sure you read the whole page, including the warnings at the bottom of the page. You should fully understand how this trading system works so that you may make your own informed decisions as of how to use it. Use this trading system at your own risk.",
"updated": 1611675586788
},
{
"style": "Block",
"text": "Dummy",
"updated": 1611675545647
},
{
"style": "Title",
"text": "Live Trading Warning",
"updated": 1611675667792
},
{
"style": "Block",
"text": "Live Trading Warning",
"updated": 1611675680690
},
{
"style": "Warning",
"text": "Superalgos is a piece of computer software. Like with any software, errors may occur at any point, including errors that may cause you to lose money. You are responsible for taking all precautions you may deem appropriate before trading live. Even if you take all possible precautionary measures, things may still go wrong and errors may occur. By using this software to trade live despite the warnings, you acknowledge that you are aware of the inherent risks in trading and in using software for that purpose. The Superalgos project offers the software AS IS, with no explicit or implied warranties of any kind. The project, the software, the superalgos.org website, this documentation, and the Community do not offer financial advice. Although the strategies shipping with the system may be fully functional, Superalgos does not make any express or implied recommendation as to how you should use them. We share strategies for educational purposes only. Trade under your responsibility and at your own risk. The use of the software is subject to the terms of the <a href=\"https://github.com/Superalgos/Superalgos/blob/master/LICENSE\" target=\"_blank\">LICENSE</a>.",
"updated": 1611675794734
},
{
"style": "Block",
"text": "Dummy",
"updated": 1611675552888
},
{
"style": "Title",
"text": "Trading System Disclaimer",
"updated": 1611675873043
},
{
"style": "Block",
"text": "Trading System Disclaimer",
"updated": 1611675912784
},
{
"style": "Important",
"text": "THIS IS NOT FINANCIAL ADVICE. ALTHOUGH STRATEGIES SHIPPING WITH SUPERALGOS MAY BE FULLY FUNCTIONAL, SUPERALGOS DOES NOT MAKE ANY EXPRESS OR IMPLIED RECOMMENDATION AS OF HOW YOU SHOULD USE THEM. WE SHARE STRATEGIES FOR EDUCATIONAL PURPOSES ONLY. TRADE AT YOUR OWN RISK.<br/><br/><b>Performance in backtesting is not an indication of live trading performance.</b> Live performance may vary in relation to performance in backtesting, for better or for worse, most likely for worse. This happens because the design of trading strategies is done after the fact, with the hindsight of what happened in a certain range of the market. Patterns upon which strategies may be based on may keep occurring or not. Trading strategies attempt to interpret patterns and predict what may follow, but they are far from being perfect or accurate. The best-case scenario is a strategy being right more times than it is wrong.<br/><br/><b>Live performance is not an indication of future performance. </b>Similarly, even when a strategy has delivered a certain performance trading live, there is no guarantee of what performance the strategy may achieve in the future. Live performance results are certainly more valuable than backtesting or simulated performance but still can’t predict the future.<br/><br/><b>Trading strategies lose effectiveness with time. </b>How much time? No-one knows. Markets evolve, change, go through different cycles, both long and short-term, some of which may not have been tested. That is true for all markets, let alone crypto, which is a very young market, still in its very early stages. Crypto markets change dramatically fast, as the market cap increases, more pro-traders enter the space, more smart money pours larger capitals, more bots take over operations of ever-increasing volumes, more complexity is added to the ecosystem with the availability of derivative markets, and so on.",
"updated": 1611676109591
},
{
"style": "Block",
"text": "Dummy"
},
{
"style": "Text",
"text": "Next snippet"
"text": "WIP"
},
{
"style": "Text",
"text": "WIP"
},
{
"style": "Text",
"text": "WIP"
},
{
"style": "Text",
"text": ""
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,14 @@
{
"type": "Trading Session",
"definition": {
"text": "Superalgos features four types of trading sessions: Backtesting Session, Paper Trading Session, Forward Testing Session, and Live Trading Session. ",
"updated": 1611937769498
},
"paragraphs": [
{
"style": "Text",
"text": "When the term is used without specifying the type of session, then it refers to the overall concept by which a trading bot instance—based on datasets exposed as products by other bots—applies the trading logic defined on a trading system in any of the aforementioned modes.",
"updated": 1611937772880
}
]
}
@@ -23,8 +23,8 @@
},
{
"style": "Title",
"text": "Serial Number Configuration",
"updated": 1609873971454
"text": "Actual Rate Configuration",
"updated": 1611924565404
},
{
"style": "Subtitle",
@@ -12,26 +12,6 @@
"style": "Title",
"text": "Configuring Exchange Account Key"
},
{
"style": "Text",
"text": "Select Configure Key on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": "\"codeName\": \"Paste your exchange API name or label here\","
},
{
"style": "Text",
"text": "\"secret\": \"Paste your exchange API secret key here.\""
},
{
"style": "Text",
"text": "}"
},
{
"style": "List",
"text": "codeName is the name or label of your key, as supplied by the exchange."
@@ -8,6 +8,28 @@
"style": "Block",
"text": "Content"
},
{
"style": "Title",
"text": "In Live Sessions"
},
{
"style": "Text",
"text": "In the context of live sessions, that is, paper trading, forward testing, and live trading, you may want to run the session on the 01-min time frame so that the trading bot reacts fast when the price tags the take profit or stop loss targets.",
"updated": 1611866615974
},
{
"style": "Important",
"text": "Remember that Superalgos does not place stop or take profit orders at the time of entering the position. Instead, the trading bot checks the current price upon each execution Cycle and determines whether Managed Stop Loss or Managed Take Profit targets have been hit or not. If targets are hit, the Close Stage opens and orders are placed on the next cycle, which happens to be on the next candle."
},
{
"style": "Text",
"text": "If for whatever reason you don't need to minimize the potential for slippage when hitting stop or take profit targets, you may choose whatever time frame you like, taking into account the explanations below."
},
{
"style": "Title",
"text": "In Backtesting Sessions",
"updated": 1611864433090
},
{
"style": "Text",
"text": "In the context of backtesting sessions, what time frame you decide to run the session depends on the trading system being tested. If the trading system makes decisions based on the 1-hour candle and above, then 01-hs may be the best choice. However, if decisions are influenced by sub-hour candles then you should match the time frame accordingly."
@@ -16,18 +38,50 @@
"style": "Text",
"text": "In other words, in backtesting sessions, you should match the time frame to the smallest period on which the trading system makes decisions."
},
{
"style": "Text",
"text": "In the context of live sessions, that is, paper trading, forward testing, and live trading, you should run the session on the 01-min time frame so that the trading bot reacts fast when the price tags the take profit or stop loss targets.",
"updated": 1609676121406
},
{
"style": "Important",
"text": "Remember that stop and take profit orders are not placed at the exchange after the take position event, that is, once you enter the position. Instead, the trading bot checks the current price upon each execution cycle and determines whether targets have been hit or not. If targets are hit, only then orders are placed. That is why running live trading sessions at the 01-min time frame is recommended. Learn more about the management of take profit and stop loss targets."
"text": "The above, however, is only partially correct. Setting the time frame to match the decision-making criteria of the Trading System is desirable to save time in backtests. You save time because the smallest reasonable collection of candles is evaluated. However, the time-saving may come at the cost of precision!",
"updated": 1611864503880
},
{
"style": "Text",
"text": "If for whatever reason you don't need to minimize the potential for slippage when hitting stop or take profit targets, you may choose whatever time frame you like, taking into account the explanations below."
"text": "Remember what was said about stop loss and take profit orders earlier: they do not exist in Superalgos. When a target is hit, orders are placed in the following Cycle, which happens to be on the next candle!",
"updated": 1611867434260
},
{
"style": "Callout",
"text": "Let's take a minute to reflect on the implications of the above! If targets are hit on one candle and orders are placed on the next candle, there is the potential for huge Slippage if the session is run on higher time frames! This is the cost in precision mentioned earlier.",
"updated": 1611867460626
},
{
"style": "Text",
"text": "The above explanation seems to point in the following direction: if you want backtesting simulations to be comparable to live sessions run on the 01-min time frame, then you should run the backtesting session on the 01-min time frame as well. There is, however, a workaround.",
"updated": 1611865962360
},
{
"style": "Subtitle",
"text": "Workaround",
"updated": 1611865696092
},
{
"style": "Text",
"text": "You may use the Simulated Exchange Events structure of nodes to arbitrarily define the exit rate of the position.",
"updated": 1611866026489
},
{
"style": "Text",
"text": "For example, you may use the following formula in the Simulated Actual Rate node as well as in the Target Rate of the Close Stage:",
"updated": 1611866230721
},
{
"style": "Javascript",
"text": "targetRate()\n\nfunction targetRate() {\n switch (tradingEngine.current.position.exitType.value) {\n case 'No Exit': {\n return tradingEngine.current.episode.candle.close.value\n break\n }\n case 'Take Profit': {\n return tradingEngine.current.position.takeProfit.finalValue.value\n break\n }\n case 'Stop Loss': {\n return tradingEngine.current.position.stopLoss.finalValue.value\n break\n }\n }\n}",
"updated": 1611866140829
},
{
"style": "Text",
"text": "The formula sets the Simulated Actual Rate to be the last known takeProfit rate if the exit was triggered by hitting of the Managed Take Profit, or the last known stopLoss in case it was the Managed Stop Loss target.",
"updated": 1611866508554
},
{
"style": "Title",
@@ -36,7 +90,8 @@
},
{
"style": "Callout",
"text": "Running trading sessions of any given trading system on different time frames may produce different results. This is because the behavior of a trading session may vary depending on how well the time frame on which the session is run matches the logic of the strategy."
"text": "Running trading sessions of any given trading system on different time frames may produce different results. This is because the behavior of a trading session may vary depending on how well the time frame matches the logic of the strategy.",
"updated": 1611867546138
},
{
"style": "Text",
@@ -110,16 +165,6 @@
"style": "Text",
"text": "The above is true for all types of trading sessions."
},
{
"style": "Title",
"text": "Backtesting Vs. Live Sessions",
"updated": 1609675561159
},
{
"style": "Text",
"text": "In a backtesting session, the collection of candles evaluated is determined by the time frame selected, to better simulate what would happen if the live trading session was run in the same time frame.",
"updated": 1609676241233
},
{
"style": "Block",
"text": "Configuring"
@@ -0,0 +1,25 @@
{
"topic": "Alpha Data Mine",
"pageNumber": 1,
"type": "Alpha By @rico4dev",
"definition": {
"text": "The set of indicators built in the Alpha data mine include Average True Range (ATR), Rate of Change (ROC), and Stochastic.",
"updated": 1611684891911
},
"paragraphs": [
{
"style": "Text",
"text": "The Alpha data mine is brought to you by...",
"updated": 1611764233624
},
{
"style": "Link",
"text": "@rico4dev->github.com/rico4dev",
"updated": 1611684986550
},
{
"style": "Success",
"text": "Collaborate with this data mine and report issues directly at the contributor’s repository."
}
]
}
@@ -0,0 +1,75 @@
{
"topic": "Alpha Data Mine",
"pageNumber": 2,
"type": "Average True Range (ATR) - Alpha Indicator",
"definition": {
"text": "The indicator features 2 different smoothing functions: ATR - SMA (simple moving average) / ATR - RMA (exponential moving average).",
"updated": 1611653265149
},
"paragraphs": [
{
"style": "Title",
"text": "Average True Range On the Charts",
"updated": 1611653284523
},
{
"style": "Text",
"text": "According to Investopedia, “The Average True Range (ATR) is a technical analysis indicator that measures market volatility by decomposing the entire range of an asset price for that period.” The ATR doesn’t indicate a direction of price movement but measures the strength of a movement.",
"updated": 1611653385842
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/alpha-bots-layers-00-ATR.png",
"updated": 1611653349714
},
{
"style": "Text",
"text": "The True Range (TR) calculates an absolute value of the range between the high/low of the current period and the previous period close. Because absolute values are used, the True Range has only positive numbers indicating the volatility change from the previous period. The result of the true range is smoothed by the Average True Range (ATR). The Alpha data mine provides ATR indicators with 2 different smoothing function: ATR - SMA (simple moving average) / ATR - RMA (exponential moving average)",
"updated": 1611653431040
},
{
"style": "Text",
"text": "The chart for this indicator shows the 3 lines of ATR values from different periods (2, 3, 14). Higher ATR values indicate higher market volatility, independent of price action direction. The bottom line is zero as the minimum value. The longer period provides a more general overview of the current market volatility and the lower periods react to short term movements."
},
{
"style": "Text",
"text": "The information panel shows the numeric value for each ATR value in the layer."
},
{
"style": "Title",
"text": "Average True Range Products & Properties"
},
{
"style": "Text",
"text": "There are two products available, each with different smoothing functions and different period configurations:"
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Properties |\n| ATR - SMA | atrSMA | atr2, atr3, atr14 |\n| ATR - RMA | atrRMA | atr2, atr3, atr14 |",
"updated": 1611653540033
},
{
"style": "Text",
"text": "Examples:",
"updated": 1611653567081
},
{
"style": "Javascript",
"text": "chart.at24hs.atrSMA.atr3 > chart.at24hs.atrSMA.atr14",
"updated": 1611653583042
},
{
"style": "Text",
"text": "Faster ATR (ATR-3) value above slower ATR (ATR-14) value indicates a higher volatility in the short term movement."
},
{
"style": "Javascript",
"text": "chart.at04hs.atrRMA.atr3 > chart.at04hs.atrRMA.atr14",
"updated": 1611653589135
},
{
"style": "Text",
"text": "Same example as above but with RMA (Exponatial Moving Average) as the smoothing function."
}
]
}
@@ -0,0 +1,63 @@
{
"topic": "Alpha Data Mine",
"pageNumber": 3,
"type": "Rate of Change (ROC) - Alpha Indicator",
"definition": {
"text": "The indicator features three products for the following periods: 9, 32, 76.",
"updated": 1611653819391
},
"paragraphs": [
{
"style": "Title",
"text": "Rate of Change On the Charts",
"updated": 1611653837081
},
{
"style": "Text",
"text": "According to Investopedia, “The rate of change (ROC) is the speed at which a variable changes over a specific period of time.” It’s an unbounded momentum indicator and a good tool to spot long term trends. This indicator should not be used as a signal in and of itself but can help to confirm other signals."
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/alpha-bots-layers-00-ROC.png",
"updated": 1611653904946
},
{
"style": "Text",
"text": ""
},
{
"style": "Text",
"text": "Mathematically, ROC describes the percentage change of the current close price to the close price from an earlier period."
},
{
"style": "Text",
"text": "The Alpha data-mine provides 3 ROC indicators with periods 76, 32, and 9. The Rate of Change is closely tied to price action. When price raises ROC value tends to be above the zero line and when price is falling ROC value tends to be below the zero line."
},
{
"style": "Title",
"text": "Rate of Change Products & Properties"
},
{
"style": "Text",
"text": "There are three products based on various periods available. It is a simple indicator and has only one value: the percentage of change to the previous period."
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Properties |\n| ROC | roc9 | value |\n| ROC | roc32 | value |\n| ROC | roc76 | value |",
"updated": 1611654013516
},
{
"style": "Text",
"text": "Examples:"
},
{
"style": "Javascript",
"text": "chart.at01hs.roc9.value > 0 && chart.at01hs.roc9.value > chart.at01hs.roc9.previous.value",
"updated": 1611654033531
},
{
"style": "Text",
"text": "Check if Rate of Change is above the zero trend line and moving upwards."
}
]
}
@@ -0,0 +1,55 @@
{
"topic": "Alpha Data Mine",
"pageNumber": 4,
"type": "Stochastic - Alpha Indicator",
"definition": {
"text": "The indicator features the typical stochastic setting of 14, 3, 3.",
"updated": 1611654181677
},
"paragraphs": [
{
"style": "Title",
"text": "Stochastic On the Charts",
"updated": 1611654194522
},
{
"style": "Text",
"text": "According to Investopedia, “A stochastic oscillator is a momentum indicator comparing a particular closing price of a security to a range of its prices over a certain period of time. It is used to generate overbought and oversold trading signals, utilizing a 0-100 bounded range of values.”"
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/alpha-bots-layers-00-Stoch.png",
"updated": 1611654252670
},
{
"style": "Text",
"text": "The chart for this indicator shows a fast line and slow line oscillating in a range between 0 and 100. The fast line displays the current close price in relation to the high/low range of the previous period. The slow line is a simple moving average of the fast line. Major signals provided by the stochastic indicator are overbought and oversold conditions. The default area for oversold is below 20 and for overbought above 80. Divergences between price action and stochastic records can also be helpful to identify upcoming trend reversals."
},
{
"style": "Title",
"text": "Stochastic Products & Properties"
},
{
"style": "Text",
"text": "Stochastic provides one product with a popular default setting."
},
{
"style": "Table",
"text": "| Product Setting | Product Variable | Properties |\n| Stochastic (14, 3, 3) | stoch1433 | fastLine, slowLine |",
"updated": 1611654306810
},
{
"style": "Text",
"text": "Examples:"
},
{
"style": "Javascript",
"text": "chart.at04hs.stoch1433.slowLine >= 80 && chart.at04hs.stoch1433.fastLine < chart.at04hs.stoch1433.slowLine ",
"updated": 1611654322478
},
{
"style": "Text",
"text": "Checking for overbought condition and the fast line lower than the slow line, indicating trend reversal."
}
]
}
@@ -19,11 +19,11 @@
},
{
"style": "Text",
"text": "In the following section you will find the specific information received when this error occured."
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Note",
"text": "You will only see it if you opened this page as a result of the error actually happening.",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611153032408
},
{
@@ -56,7 +56,7 @@
},
{
"style": "Text",
"text": "The follwing is the Error Code of the Exception that occured at the Client:"
"text": "The following is the Error Code of the Exception that occured at the Client:"
},
{
"style": "Placeholder",
@@ -69,7 +69,7 @@
},
{
"style": "Text",
"text": "The follwing are all the Error details of the Exception that occured at the Client:",
"text": "The following are all the Error details of the Exception that occured at the Client:",
"updated": 1611154675224
},
{
@@ -19,11 +19,11 @@
},
{
"style": "Text",
"text": "In the following section you will find the specific information received when this error occured."
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Note",
"text": "You will only see it if you opened this page as a result of the error actually happening.",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611151375974
},
{
@@ -58,7 +58,7 @@
},
{
"style": "Text",
"text": "The follwing is the Error Code of the Exception that occured at the Client:",
"text": "The following is the Error Code of the Exception that occured at the Client:",
"updated": 1611151443562
},
{
@@ -71,7 +71,7 @@
},
{
"style": "Text",
"text": "The follwing are all the Error details of the Exception that occured at the Client:"
"text": "The following are all the Error details of the Exception that occured at the Client:"
},
{
"style": "Placeholder",
@@ -18,11 +18,11 @@
},
{
"style": "Text",
"text": "In the following section you will find the specific information received when this error occured."
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Note",
"text": "You will only see it if you opened this page as a result of the error actually happening.",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611155956953
},
{
@@ -55,7 +55,7 @@
},
{
"style": "Text",
"text": "The follwing is the Error Code of the Exception that occured at the Client:"
"text": "The following is the Error Code of the Exception that occured at the Client:"
},
{
"style": "Placeholder",
@@ -67,7 +67,7 @@
},
{
"style": "Text",
"text": "The follwing are all the Error details of the Exception that occured at the Client:"
"text": "The following are all the Error details of the Exception that occured at the Client:"
},
{
"style": "Placeholder",
@@ -0,0 +1,774 @@
{
"topic": "Buddha Data Mine",
"pageNumber": 1,
"type": "Candle Patterns - Buddah Indicator",
"definition": {
"text": "The indicator features a pattern-recognition algorithm classifying candles in multiple groups such as Classic Candles, Marubozu Candles, Spinning Top Candles, Doji Candles, and grouping pattern into on, two, and three-candle sequences.",
"updated": 1611659834188
},
"paragraphs": [
{
"style": "Title",
"text": "Candle Patterns On the Charts",
"updated": 1611659858573
},
{
"style": "Text",
"text": "Before we may identify elaborate candle patterns, basic candles must be defined, grouped, and parameterized. Patterns may be made up of one or more candles. For this reason, the Candle Patterns indicator features a layer for basic candles and a layer for each group of patterns."
},
{
"style": "Success",
"text": "In theory, candle patterns may contribute to predicting price action. In and of itself, the occurrence of a certain pattern may not necessarily be regarded as a signal. However, when combined with other Technical Analysis tools, and when the context is properly considered, candle patterns may provide valuable information.",
"updated": 1611659875005
},
{
"style": "Title",
"text": "Basic Candles"
},
{
"style": "Text",
"text": "The starting point to search for candle patterns is to establish standard criteria to name each candle. Because candles are made up of four prices, this gives rise to a large number of possible combinations. For example, there may be candles with one, two, or without shadows, which may be big or small relative to the body of the candle, which itself may be big or small in relation to other candles, and so on."
},
{
"style": "Text",
"text": "The Basic Candles layer features two blue lines and an orange one."
},
{
"style": "List",
"text": "The blue line in the bottom connects the low price of each candle."
},
{
"style": "List",
"text": "The blue line on top results from averaging the length of the last ten candles and adding it to the low value of the current candle."
},
{
"style": "List",
"text": "The orange line in the middle is calculated by multiplying the distance between the two blue lines by an arbitrary sizeFactor."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/buddha-bots-layers-00-basic-candles.gif",
"updated": 1611659943962
},
{
"style": "Text",
"text": "Therefore, the range between the blue lines is said to represent the average length of candles. The orange line in the middle serves to determine if a candle is short or long in relation to other candles. If the high of a candle lies above the orange line, it is said to be a Long candle, otherwise, it is a Short candle."
},
{
"style": "Text",
"text": "The corresponding layer panel features the following properties for each candle:"
},
{
"style": "Table",
"text": "| Indicator Properties | Description |\n| Name | The name of the basic candle. |\n| Size | The relative size of the candle: Short or Long. |\n| Upper Shadow % | The percentage that the upper shadow covers in the total length of the candle. |\n| Body % | The percentage that the body represents in the total length of the candle. |\n| Lower Shadow % | The percentage that the lower shadow represents in the total length of the candle. |\n| Nbodies\tThe number of previous candles used to calculate the body average. |\n| dojiFactor % | A limit to the size of the body expressed as a percentage of the total length for a candle to be considered a doji. |\n| sizeFactor % | A factor used to calculate the orange line, which determines the relative size of candles, expressed as a percentage of the average length of the last few candles. |\n| Nlengths | The number of previous candles used to calculate the average candle lengths. |\n| Average Size Method | The method used to calculate the average of the total lengths of previous candles. |",
"updated": 1611660199319
},
{
"style": "Callout",
"text": "Below is the complete list of basic candles, grouped by families relative to certain characteristics they have in common."
},
{
"style": "Note",
"text": "Generally—in the literature— colors white and black are used to refer to bullish and bearish candles respectively. In our case, white has been changed to green and black to red.",
"updated": 1611660253621
},
{
"style": "Subtitle",
"text": "Classic Candles"
},
{
"style": "Text",
"text": "These candles have the following characteristics in common:"
},
{
"style": "List",
"text": "Both shadows are present."
},
{
"style": "List",
"text": "Each shadow is shorter than the body."
},
{
"style": "List",
"text": "The opening price differs from the closing price."
},
{
"style": "Text",
"text": "According to their particular characteristics, they are named as follows:"
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-short-candle.png"
},
{
"style": "List",
"text": "Basic candle name: short green candle, short red candle.",
"updated": 1611664494948
},
{
"style": "List",
"text": "Particular Characteristics: bullish or bearish, relative size: short.",
"updated": 1611664506719
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-candle.png",
"updated": 1611664358650
},
{
"style": "List",
"text": "Basic candle name: green candle, red candle.",
"updated": 1611664477906
},
{
"style": "List",
"text": "Particular Characteristics: bullish or bearish, relative size: long.",
"updated": 1611664467362
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-long-candle.png",
"updated": 1611664594764
},
{
"style": "List",
"text": "Basic candle name: long green candle, long red candle.",
"updated": 1611664647210
},
{
"style": "List",
"text": "Particular Characteristics: bullish or bearish, relative size: the body is at least three times higher than the average of the previous bodies.",
"updated": 1611664803284
},
{
"style": "Subtitle",
"text": "Marubozu Candles"
},
{
"style": "Text",
"text": "These candles have the following characteristics in common:"
},
{
"style": "List",
"text": "Lack of at least one shadow."
},
{
"style": "List",
"text": "If it has one shadow, it must be shorter than the body."
},
{
"style": "List",
"text": "The opening price differs from the closing price."
},
{
"style": "List",
"text": "Relative Size: Short or Long."
},
{
"style": "Text",
"text": "According to their particular characteristics, they are named as follows:"
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-marubozu.png",
"updated": 1611664780276
},
{
"style": "List",
"text": "Basic candle name: green marubozu, red marubozu.",
"updated": 1611665164959
},
{
"style": "List",
"text": "Particular Characteristics: bullish or bearish, no shadows.",
"updated": 1611665179855
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-opening-green-marubozu.png",
"updated": 1611665321935
},
{
"style": "List",
"text": "Basic candle name: opening green marubozu.",
"updated": 1611665397197
},
{
"style": "List",
"text": "Particular Characteristics: bullish, no lower shadow.",
"updated": 1611665409673
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-closing-green-marubozu.png",
"updated": 1611665589835
},
{
"style": "List",
"text": "Basic candle name: closing green marubozu.",
"updated": 1611665439843
},
{
"style": "List",
"text": "Particular Characteristics: bullish, no upper shadow.",
"updated": 1611665456168
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-paterns-opening-red-marubozu.png",
"updated": 1611665630738
},
{
"style": "List",
"text": "Basic candle name: opening red marubozu.",
"updated": 1611665508285
},
{
"style": "List",
"text": "Particular Characteristics: bearish, no upper shadow.",
"updated": 1611665541639
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-closing-red-marubozu.png",
"updated": 1611665650660
},
{
"style": "List",
"text": "Basic candle name: closing red marubozu.",
"updated": 1611665523586
},
{
"style": "List",
"text": "Particular Characteristics: bearish, no lower shadow.",
"updated": 1611665537621
},
{
"style": "Subtitle",
"text": "Spinning Top Candles",
"updated": 1611665696434
},
{
"style": "Text",
"text": "These candles have the following characteristics in common:"
},
{
"style": "List",
"text": "Have at least one shadow."
},
{
"style": "List",
"text": "At least one shadow is greater than the body."
},
{
"style": "List",
"text": "The opening price differs from the closing price."
},
{
"style": "Text",
"text": "According to their particular characteristics, they are named as follows:"
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-spinning-top.png",
"updated": 1611666025715
},
{
"style": "List",
"text": "Basic candle name: green spinning top, red spinning top.",
"updated": 1611665761239
},
{
"style": "List",
"text": "Particular Characteristics: bullish or bearish, relative size: short or long. If it's relative size is long, none of the shadows can exceed three times the body.",
"updated": 1611665931065
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-high-wave.png",
"updated": 1611666029656
},
{
"style": "List",
"text": "Basic candle name: high wave.",
"updated": 1611665879645
},
{
"style": "List",
"text": "Particular Characteristics: bullish or bearish, relative size: long. The length of at least one shadow is at least 3 times larger than the body.",
"updated": 1611665965134
},
{
"style": "Subtitle",
"text": "Doji Candles",
"updated": 1611666064552
},
{
"style": "Text",
"text": "These candles have the following characteristics in common:"
},
{
"style": "List",
"text": "Have no body, or very small body if it is allowed."
},
{
"style": "Text",
"text": "According to their particular characteristics, they are named as follows:"
},
{
"style": "Text",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-four-price-doji.png",
"updated": 1611666216757
},
{
"style": "List",
"text": "Basic candle name: Four-Price Doji",
"updated": 1611666227026
},
{
"style": "List",
"text": "Particular Characteristics: No shadows. Relative Size: Short.",
"updated": 1611666247154
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-star-doji.png",
"updated": 1611666266620
},
{
"style": "List",
"text": "Basic candle name: Star Doji",
"updated": 1611666282629
},
{
"style": "List",
"text": "Particular Characteristics: The body is located nearly mid-range (between 60% and 40% of total length). Relative Size: Short.",
"updated": 1611666296442
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-long-legged-doji.png",
"updated": 1611666315337
},
{
"style": "List",
"text": "Basic candle name: Long-Legged Doji",
"updated": 1611666341819
},
{
"style": "List",
"text": "Particular Characteristics: The body is located nearly mid-range (between 60% and 40% of total length). Relative Size: Long.",
"updated": 1611666354652
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-dragonfly-doji.png",
"updated": 1611666376364
},
{
"style": "List",
"text": "Basic candle name: Dragonfly Doji",
"updated": 1611666387310
},
{
"style": "List",
"text": "Particular Characteristics: Upper shadow shorter than 1% of total candle length. Relative Size: Long.",
"updated": 1611666402256
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-pattterns-gravestone-doji.png",
"updated": 1611666424758
},
{
"style": "List",
"text": "Basic candle name: Gravestone Doji",
"updated": 1611666434564
},
{
"style": "List",
"text": "Particular Characteristics: Lower shadow shorter than 1% of total candle length. Relative Size: Long.",
"updated": 1611666455595
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/indicators/candle-patterns-generic-doji.png",
"updated": 1611666472429
},
{
"style": "List",
"text": "Basic candle name: Generic Doji",
"updated": 1611666485762
},
{
"style": "List",
"text": "Particular Characteristics: All doji candles that do not match the 5 mentioned above.",
"updated": 1611666494060
},
{
"style": "Text",
"text": " Note: It is worth noting that this initial set of definitions is what may be found in the general literature. However, the indicator may be expanded to identify other types of candles. We welcome ideas and contributions in that regard.",
"updated": 1611666624611
},
{
"style": "Title",
"text": "One-Candle Patterns"
},
{
"style": "Text",
"text": "One-Candle Patterns consist of a single basic candle in a certain market context. Matching the type of basic candle with the analysis of the context in terms of the current trend as indicated by a 10-period exponential moving average (EMA) may help predict reversals or continuations."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/buddha-bots-layers-01-one-candle-patterns.gif",
"updated": 1611666677328
},
{
"style": "Text",
"text": "The layer features an EMA 10 drawn with a dark line. It also features green and red arrows below and above the one-candles patterns, indicating the position in which the pattern appears."
},
{
"style": "Text",
"text": "If the candle is green and is pointing up, the pattern indicates a “Bullish Reversal” or a “Bullish Continuation” forecast when it’s trending downwards or upwards respectively. If the candle is red and is pointing down, it indicates a “Bearish Reversal” or “Bearish Continuation” forecast when the trend is up or down respectively."
},
{
"style": "Text",
"text": "The panel features the following properties:"
},
{
"style": "Table",
"text": "| Indicator Properties | Description |\n| Pattern Name | The name of the pattern. |\n| Trend Direction | The market trend on which the pattern has formed, as indicated by the EMA 10. |\n| Forecast | The prediction given by the pattern forming in the current trend. |\n| Trend Line Method | The method used to calculate the moving average that represents the trend line. |\n| Trend Line Period | The number of periods used to calculate the moving average. |\n| Trend Line Value | The current value of the moving average. |",
"updated": 1611666767939
},
{
"style": "Text",
"text": ""
},
{
"style": "Title",
"text": "Two-Candles Patterns",
"updated": 1611666789921
},
{
"style": "Text",
"text": "Two-Candles Patterns are built from two basic candles."
},
{
"style": "Note",
"text": "The same concepts regarding the context of the trend discussed for one-candle patterns apply for all patterns with two candles or more.",
"updated": 1611666841317
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/buddha-bots-layers-02-two-candles-patterns.gif",
"updated": 1611666873616
},
{
"style": "Text",
"text": "When analyzing patterns of more than one candle, it is important to understand the following concepts:"
},
{
"style": "List",
"text": "The first candle in the pattern is the first candle that is formed chronologically, and so on for the following candles."
},
{
"style": "List",
"text": "The first candle in the pattern is the one that defines the trend of the pattern. For this reason, the value and the direction of the trend line of the pattern corresponding to the trend line of the first candle."
},
{
"style": "List",
"text": "The arrow is drawn on the last candle that forms the pattern."
},
{
"style": "Note",
"text": "The three concepts explained above apply for all patterns with two candles or more",
"updated": 1611666907262
},
{
"style": "Title",
"text": "Three-Candles Patterns"
},
{
"style": "Text",
"text": "Three-Candles Patterns are built from three basic candles."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/buddha-bots-layers-03-three-candles-patterns.gif",
"updated": 1611666939633
},
{
"style": "Title",
"text": "Candle Patterns Products & Properties"
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Property Variables |\n| Basic Candles | basicCandle | name, size, direction, upperShadow, body, lowerShadow, length, meanBody, meanLength |\n| One-Candle Patterns | oneCandlePattern | name, trend, forecast, trendLine |\n| Two-Candles Patterns | twoCandlePattern | name, trend, forecast, trendLine |\n| Three-Candles Patterns | threeCandlePattern | name, trend, forecast, trendLine |",
"updated": 1611667058514
},
{
"style": "Text",
"text": "Examples:",
"updated": 1611667073840
},
{
"style": "Javascript",
"text": "chart.at24hs.basicCandle.name === \"Long Green Candle\"",
"updated": 1611667082322
},
{
"style": "Text",
"text": "Is Long Green Candle the name of the current basic candle?"
},
{
"style": "Javascript",
"text": "chart.at24hs.basicCandle.upperShadow > chart.at24hs.basicCandle.body",
"updated": 1611667090410
},
{
"style": "Text",
"text": "Is the upper shadow longer than the body?"
},
{
"style": "Subtitle",
"text": "Basic Candles"
},
{
"style": "Table",
"text": "| Variable | Description | Possible Values |\n| name | The name that has been assigned to the basic candle. | Short Green Candle, Short Red Candle, Green Candle, Red Candle, Long Green Candle, Long Red Candle, Green Marubozu, Opening Green Marubozu, Closing Green Marubozu, Red Marubozu, Opening Red Marubozu, Closing Red Marubozu, Red Spinning Top, Green Spinning Top, High Wave, Four-Price Doji, Star Doji, Long-Legged Doji, Dragonfly Doji, Gravestone Doji, Generic Doji |\n| size | The relative size of the candle | short, long |\n| direction | Indicates if it’s a bullish or a bearish candle | bullish, bearish |\n| upperShadow | The length of the upper shadow | |\n| body | The length of the body | |\n| lowerShadow | The length of the lower shadow | |\n| length | The total length of the candle (candle.max - candle.min) | |\n| meanBody | The moving average of the length of the bodies of previous candles | |\n| meanLength | The moving average of the total length of previous candles | |",
"updated": 1611667360206
},
{
"style": "Subtitle",
"text": "One-Candle Patterns",
"updated": 1611667454262
},
{
"style": "Table",
"text": "| Variable | Description | Predefined Values |\n| name | The name assigned to the pattern | Bearish Strong Line, Bearish Belt Hold, Hanging Man, Shooting Star, Bullish Belt Hold, Hammer, Bullish Strong Line |\n| trend | The market trend during which the pattern has formed | Uptrend, Downtrend |\n| forecast | It is the possible future scenario that represents the formation of this pattern | Bullish Continuation, Bullish Reversal, Bearish Continuation, Bearish Reversal |\n| trendLine | The value of the Moving Average that represents the trend line on which the pattern was formed | | ",
"updated": 1611667583593
},
{
"style": "Subtitle",
"text": "Two-Candles Patterns",
"updated": 1611667605300
},
{
"style": "Table",
"text": "| Variable | Description | Predefined Values |\n| name | It is the name that has been assigned to the pattern based on the configuration of the candles that make it up | Last Engulfing Bottom, Bearish Engulfing, Bearish Harami, Bearish Harami Cross, Bearish Tasuki Line, Descending Hawk, Tweezers Top, Two-Candle Shooting Star, Last Engulfing Top, Bullish Engulfing, Bullish Harami, Bullish Harami Cross, Bullish Tasuki Line, Tweezers Bottom |\n| trend | The market trend during which the pattern has formed | Uptrend, Downtrend |\n| forecast | It is the possible future scenario that represents the formation of this pattern | Bullish Continuation, Bullish Reversal, Bearish Continuation, Bearish Reversal |\n| trendLine | The value of the Moving Average that represents the trend line on which the pattern was formed | |",
"updated": 1611667750859
},
{
"style": "Subtitle",
"text": "Three-Candles Patterns",
"updated": 1611667798063
},
{
"style": "Text",
"text": "The following table details the variables that can be used in the conditions of the trading strategies:"
},
{
"style": "Table",
"text": "| Variable | Description | Predefined Values |\n| name | It is the name that has been assigned to the pattern based on the configuration of the candles that make it up | Advance Block, Deliberation, Identical Three Crows, Three Inside Down, Three Outside Down, Three Inside Up, Three Outside Up |\n| trend | The market trend during which the pattern has formed | Uptrend, Downtrend |\n| forecast | It is the possible future scenario that represents the formation of this pattern | Bullish Continuation, Bullish Reversal, Bearish Continuation, Bearish Reversal |\n| trendLine | The value of the Moving Average that represents the trend line on which the pattern was formed | | ",
"updated": 1611667928056
},
{
"style": "Title",
"text": "Calculation Parameters",
"updated": 1611668026071
},
{
"style": "Subtitle",
"text": "Basic Candles"
},
{
"style": "Text",
"text": "The following table details the parameters that may be configured in the code of the indicator products:"
},
{
"style": "Table",
"text": "| Parameter | Description | Default Value | Normal Values |\n| Nbodies | The number of previous candle bodies used to calculate “meanBody” | 10 | 5 to 20 |\n| dojiFactor | It is the maximum percentage allowed for the body in relation to the length for the candle to be included in the Doji family | 3 | 0 to 5 |\n| sizeFactor | It is the percentage of the “meanLength” used to determinate the “size” of a candle (orange line on the chart) | 75 | 60 to 80 |\n| Nlengths | The number of previous candle lengths used to calculate “meanLength” | 20 | 10 to 25 |\n| sizeMethod | The method used to calculate “meanLength” | EMA | SMA or EMA |",
"updated": 1611668176042
},
{
"style": "Note",
"text": "To change the above-mentioned parameters, open the Basic Candles product definition, open the JavaScript Code of the Procedure Loop, and find the parameters in the first part of the code.",
"updated": 1611668256856
},
{
"style": "Subtitle",
"text": "Candle Patterns",
"updated": 1611668285348
},
{
"style": "Text",
"text": "The following table details the parameters that may be configured in the code of the indicator products:"
},
{
"style": "Table",
"text": "| Parameter | Description | Default Value | Normal Values |\n| N | It is the period of the moving average used to calculate the trend line | 10 | 5 to 20 |\n| trendMethod | The method used to calculate the trend line Moving Average | EMA | SMA or EMA |",
"updated": 1611668389582
},
{
"style": "Title",
"text": "The Theory Behind Candle Patterns",
"updated": 1611668433320
},
{
"style": "Subtitle",
"text": "Introduction"
},
{
"style": "Text",
"text": "Candle patterns are a versatile tool that traders use to visually estimate the sentiment of market participants. The logic implemented in this indicator was distilled from content in the following works:"
},
{
"style": "List",
"text": "“Candlestick Charting Explained” - Author: Greg Morris"
},
{
"style": "List",
"text": "“Technical Analysis of The Financial Markets” - Author: John J. Murphy"
},
{
"style": "List",
"text": "“Encyclopedia of Candlestick Charts” - Author: Thomas N. Bulkowski"
},
{
"style": "List",
"text": "“Encyclopedia of Chart Patterns” - Author: Thomas N. Bulkowski"
},
{
"style": "List",
"text": "“Japanese Candlestick Charting Techniques” - Author: Steve Nison"
},
{
"style": "Text",
"text": "You may also wish to visit the following sources:"
},
{
"style": "List",
"text": "Thomas Bulkowski: ThePatternSite.com"
},
{
"style": "List",
"text": "Investopedia: Introduction to Technical Analysis Price Patterns"
},
{
"style": "List",
"text": "CandleSticker by American Bulls"
},
{
"style": "Subtitle",
"text": "Parts of a Candle"
},
{
"style": "Text",
"text": "Let’s start by agreeing on the basic vocabulary to describe candles."
},
{
"style": "Text",
"text": "The first price from which the candle begins to form is the open price. The last price from which the candle finishes forming is the close price. The distance between both prices is called body. Market volatility may cause the price to fluctuate beyond both prices during candle formation, creating shadows. The upper shadow is the line that links the maximum price with the body. The lower shadow is the line that links the min price with the body."
},
{
"style": "Text",
"text": "Regarding color:"
},
{
"style": "List",
"text": "When the closing price is greater than the open price, the body of the candle is green. This indicates that it is a bullish candle."
},
{
"style": "List",
"text": "When the closing price is lesser than the open price, the body of the candle is red. This indicates that it is a bearish candle."
},
{
"style": "Subtitle",
"text": "Body of Doji Candles"
},
{
"style": "Text",
"text": "Japanese candle theory defines a doji candle as one in which the closing price equals the opening price. In other words, a doji candle should have no body. In practice, the following aspects must be taken into account:"
},
{
"style": "List",
"text": "Price volatility"
},
{
"style": "List",
"text": "The precision with which prices are recorded"
},
{
"style": "Text",
"text": "These two factors make it very unlikely that both prices match exactly and—in practice—there is always a body, even if it is very small. For this reason, we define a range of uncertainty in body length to determine whether a candle is a doji or not. By default, we assume that the doji’s body may be equal or lesser than 3% of the total length of the candle. This is the dojiFactor."
},
{
"style": "Subtitle",
"text": "Relative Size: Short or Long"
},
{
"style": "Text",
"text": "It is very important to understand this concept since during the study and identification of candle patterns we must differentiate the size of each particular candle, that is, which ones are long and which are short. Intuitively, this seems simple, but translating the logic into an algorithm requires defining what tools will be used and how they will be parameterized."
},
{
"style": "Text",
"text": "To start, we need to establish some reference to decide what is long and what is short, since a long candle in some market context may be short in another context. When we look at a chart, our sight may deceive us since the context around a candle involves both past and future candles. However, when our algorithm is working on a live session, it may only see candles in the past."
},
{
"style": "Text",
"text": "It may be deduced that the average of the size of a certain number of past candles must be used as the frame of reference. This method arises from common sense and therefore it is the one observed to be widely used in the literature. Some authors differ in their criteria averaging only the bodies or averaging the total lengths including also the shadows."
},
{
"style": "Text",
"text": "For this reason, we have made both criteria available:"
},
{
"style": "List",
"text": "Body average: Bulkowski uses this criterion to detect candles of the type Long Green Candle and Long Red Candle. Since they are a particular case that occurs when the size of the body extends more than three times compared to the previous candle’s body average."
},
{
"style": "List",
"text": "Length average: this criterion is used in a general manner, for all basic candles, since it also includes doji candles which have no body (or have very small bodies); with the previous criterion they would always be sized as Short, which is not what we are looking for."
},
{
"style": "Subtitle",
"text": "Pattern Validation"
},
{
"style": "Text",
"text": "To find candle patterns on the chart, it is necessary to analyze the market context in which the basic candles appear and how they are related to each other. For this reason, the following concepts are necessary:"
},
{
"style": "List",
"text": "Trend Line: To determine if prices are in an Uptrend or a Downtrend, a reference trend line is necessary, which is generally a moving average."
},
{
"style": "List",
"text": "Minimum Trend Candles: It is the minimum number of candles that must be on the same trend line to validate a pattern. By default, 3 candles will be used."
},
{
"style": "Text",
"text": "Forecast:"
},
{
"style": "List",
"text": "Bullish Reversal: In a downtrend, a pattern is considered valid when the body of the first candle is below the trend line."
},
{
"style": "List",
"text": "Bullish Continuation: In an uptrend, a pattern is considered valid when at least open prices of all pattern candles are above the trend line."
},
{
"style": "List",
"text": "Bearish Reversal: In an uptrend, a pattern is considered valid when the body of the first candle is above the trend line."
},
{
"style": "List",
"text": "Bearish Continuation: In a downtrend, a pattern is considered valid when at least open prices of all candles are below the downtrend."
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,284 @@
{
"topic": "Community Trading Systems",
"pageNumber": "1",
"type": "BTC-USDT - Weak-hands Buster (WHB)",
"definition": {
"text": "A trading system based on the break down of the Bollinger Bands idea, designed to accumulate Bitcoin, targeting major downward market moves.",
"updated": 1611675437927
},
"paragraphs": [
{
"style": "Text",
"text": "Weak-hands Buster was released in the Superalgos Community Telegram group in August 2019 and has been trading live since. An evolution of the system is currently available as version 2. This page explains the trading system and analyzes its performance.",
"updated": 1611675468833
},
{
"style": "Text",
"text": "The trading system conforms to the Superalgos Trading Protocol, therefore, it may function as a fully automated trading system. People not interested in trading automation may still obtain the strategy’s rules (situations, conditions, and formulas) from the design space and use the set of rules as they see fit."
},
{
"style": "Note",
"text": "Weak-hands Buster v2 is available on the Weak-Hands-Buster v2.json plugin workspace shipping with Superalgos.",
"updated": 1611675482499
},
{
"style": "Include",
"text": "Superalgos->Concept->Reusable Snippets->Read Whole Page Warning",
"updated": 1611676482873
},
{
"style": "Title",
"text": "WHB V.2 Performance in Backtests (Binance)",
"updated": 1611676505532
},
{
"style": "Text",
"text": "The following was the performance in backtests at the time of publishing:"
},
{
"style": "Table",
"text": "| Details | Jan 2018 - Mar 2020 | 2020 Jan-Mar | 2019 | 2018 |\n| Trades: | 24 | 2 | 9 | 13 |\n| Hits: | 19 | 1 | 8 | 10 |\n| Fails: | 5 | 1 | 1 | 3 |\n| Hit Ratio: | 79 % | 50 % | 89 % | 77 % |\n| ROI: | 2,662 % | 75 % | 142 % | 551 % |",
"updated": 1611676638676
},
{
"style": "Subtitle",
"text": "Notes on Backtests Performance",
"updated": 1611676669651
},
{
"style": "List",
"text": "The table above shows the results for different periods tested independently."
},
{
"style": "List",
"text": "Each backtest starts with an initial capital. With the default configuration, the system reinvests accumulated profits on every trade (positionSize = balanceBaseAsset)."
},
{
"style": "List",
"text": "ROI is calculated over the initial capital for each backtest, and the result is rounded to the closest integer."
},
{
"style": "List",
"text": "Because the system reinvests accumulated profits, the sum of ROI in different periods is not the same as ROI for all periods run in one single test (first column)."
},
{
"style": "Subtitle",
"text": "Assumptions"
},
{
"style": "List",
"text": "Slippage: 0.1 % in all orders."
},
{
"style": "List",
"text": "Fees: 0.1 % in all orders."
},
{
"style": "Title",
"text": "Technical Sheet"
},
{
"style": "Subtitle",
"text": "Market"
},
{
"style": "Text",
"text": "USDT-BTC, with BTC as the base asset."
},
{
"style": "Subtitle",
"text": "Strategy Goal"
},
{
"style": "Text",
"text": "Accumulate bitcoin during bear markets and/or consolidation periods, with a conservative approach to minimize risk."
},
{
"style": "Subtitle",
"text": "Approach"
},
{
"style": "Text",
"text": "Split the goal into two fundamental notions:"
},
{
"style": "List",
"text": "Focus on potentially big market moves: The strategy is optimized for major trend reversals resulting in long bear markets. Significant consolidations during bull markets are targetted as well.",
"updated": 1611676774411
},
{
"style": "List",
"text": "Take the clearest and most promising opportunities only: Pass on everything else to avoid fails and preserve capital.",
"updated": 1611676784702
},
{
"style": "Subtitle",
"text": "Trading Idea"
},
{
"style": "Text",
"text": "The main trading idea is to identify short-term reversals as well as continuations and deepening of trends marked by a break down of the Bollinger Bands (BB) on the 1-hour chart, using the Percentage Bandwidth (%B) indicator, the Bollinger Bands Moving Average (BB MA) and the Bollinger Band deviation to assess momentum and volatility, optimize the take position event, and filter out late entries."
},
{
"style": "Subtitle",
"text": "Implementation"
},
{
"style": "Text",
"text": "The original system is dissected in a Coinmonks article: How to Increase your Bitcoin Holdings in a Bear Market. Version 2 maintains the trading idea and the take position event almost intact."
},
{
"style": "Subtitle",
"text": "Position Size"
},
{
"style": "Text",
"text": "The positionSize is set to balanceBaseAsset by default. This means that the trading system takes positions with the whole balance, that is, the initialBalance as defined in the configuration of the base asset parameter of the trading session, plus all accumulated profits if any. You may change this formula as you see fit."
},
{
"style": "Important",
"text": "Please take enough time to consider the implications of the above statement and make your own judgment about what setting may be appropriate for you.",
"updated": 1611676831315
},
{
"style": "Subtitle",
"text": "Trading Frequency"
},
{
"style": "Text",
"text": "The strategy is designed with the one-hour time frame as the main decision-making instance, meaning that it makes trigger and take position decisions upon the closing of the one-hour candle."
},
{
"style": "Text",
"text": "That said, when running live on Superalgos, it should be run on the one-minute time frame to allow it to react fast to market moves when evaluating take profit and stop loss targets."
},
{
"style": "Text",
"text": "Because the strategy is rather conservative in its design, it doesn’t trade every opportunity that may occur. Instead, the strategy is quite selective and trades only the most promising ones."
},
{
"style": "Text",
"text": "As a consequence, and as you may infer from the number of trades in the backtesting report above and the live trading performance of WHB V1 described below, the strategy performs an average of about one trade per month."
},
{
"style": "Subtitle",
"text": "Required Bots"
},
{
"style": "Text",
"text": "The following bots must be running and up to date to run paper trading, forward testing, and live trading sessions:"
},
{
"style": "Text",
"text": "Masters Data Mine:"
},
{
"style": "List",
"text": "OHLCVs"
},
{
"style": "List",
"text": "Candles & Volumes"
},
{
"style": "List",
"text": "Bollinger Bands & Percentage Bandwith"
},
{
"style": "List",
"text": "Bollinger Channels & SubChannels"
},
{
"style": "Text",
"text": "Sparta Data Mine:"
},
{
"style": "List",
"text": "EMA (Popular)"
},
{
"style": "Title",
"text": "Changes on WHB V.2"
},
{
"style": "List",
"text": "The two different situations making up the take position event were split into two separate strategies operating under the same trading system. This means that take profit and stop targets may be managed separately for each take position situation. This is the first case of two complementary strategies running under the same trading system."
},
{
"style": "List",
"text": "An additional condition was implemented at the take position event of each strategy so that each specializes in two different volatility ranges. The Xtreme strategy works best in extreme volatility situations (e.g. ATH period in late 2017 and early 2018). The Steep strategy works best in normal (by BTC standards) volatility situations."
},
{
"style": "List",
"text": "Management of take profit implemented originally was greatly improved for the Steep strategy, with a few simple additions and checks on the conditions that determine the events that switch phases."
},
{
"style": "List",
"text": "The trailing stop for the Steep strategy was raised from 5 to 5.25% above the 20 MA. The trailing was delayed to kick-in only after the market has dropped 5%. The initial stop target remains the same at 3%."
},
{
"style": "Title",
"text": "Original WHB Live Performance"
},
{
"style": "Table",
"text": "| Details | Sep 2019 - Mar 2020 |\n| Trades: | 7 |\n| Hits: | 4 |\n| Fails: | 3 |\n| Hit Ratio: | 57% |\n| ROI: | 76% |",
"updated": 1611676965907
},
{
"style": "Title",
"text": "Original WHB Main Live Trades",
"updated": 1611676994942
},
{
"style": "Subtitle",
"text": "Sep 2019"
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/trading-systems/whb-01.png",
"updated": 1611677095937
},
{
"style": "Subtitle",
"text": "Nov 2019"
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/trading-systems/whb-02.png",
"updated": 1611677158974
},
{
"style": "Subtitle",
"text": "Mar 2020",
"updated": 1611677186600
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/trading-systems/whb-03.png",
"updated": 1611677219965
},
{
"style": "Title",
"text": "Warning and Disclaimer"
},
{
"style": "Include",
"text": "Superalgos->Concept->Reusable Snippets->Live Trading Warning",
"updated": 1611677308824
},
{
"style": "Text",
"text": ""
},
{
"style": "Include",
"text": "Superalgos->Concept->Reusable Snippets->Trading System Disclaimer",
"updated": 1611677317072
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,647 @@
{
"topic": "Community Trading Systems",
"pageNumber": "2",
"type": "BTC-USDT - BB Top Bounce (BBTB)",
"definition": {
"text": "A trading system based on the bounce off the upper Bollinger Band idea, designed to accumulate Bitcoin, targeting a big range of market situations.",
"updated": 1611678251886
},
"paragraphs": [
{
"style": "Text",
"text": "BB Top Bounce was released in May 2020. This page explains the trading system and analyzes its performance.",
"updated": 1611678265942
},
{
"style": "Text",
"text": "The trading system conforms to the Superalgos Trading Protocol, therefore, it may function as a fully automated trading system. People not interested in trading automation may still obtain the strategy’s rules (situations, conditions, and formulas) from the design space and use the set of rules as they see fit."
},
{
"style": "Note",
"text": "BB Top Bounce is available on the BB-Top-Bounce.json plugin workspace shipping with Superalgos.",
"updated": 1611678276521
},
{
"style": "Include",
"text": "Superalgos->Concept->Reusable Snippets->Read Whole Page Warning",
"updated": 1611678326543
},
{
"style": "Title",
"text": "BBTB Performance in Backtests (Binance)",
"updated": 1611678342250
},
{
"style": "Text",
"text": "The following was the performance in backtests at the time of publishing:"
},
{
"style": "Table",
"text": "| Details | Jan 2018 - Apr 2020 | 2020 Jan-Apr | 2019 | 2018 |\n| Trades: | 77 | 8 | 26 | 42 |\n| Hits: | 67 | 6 | 25 | 35 |\n| Fails: | 10 | 2 | 1 | 7 |\n| Hit Ratio: | 87 % | 75 % | 96 % | 83 % |\n| ROI: | 4,870 % | 140 % | 268 % | 453 % |",
"updated": 1611678486882
},
{
"style": "Subtitle",
"text": "Notes on Backtests Performance",
"updated": 1611678514454
},
{
"style": "List",
"text": "The table above shows the results for different periods tested independently."
},
{
"style": "List",
"text": "Each backtest starts with an initial capital. With the default configuration, the system reinvests accumulated profits on every trade (positionSize = balanceBaseAsset)."
},
{
"style": "List",
"text": "ROI is calculated over the initial capital for each backtest, and the result is rounded to the closest integer."
},
{
"style": "List",
"text": "Because the system reinvests accumulated profits, the sum of ROI in different periods is not the same as ROI for all periods run in one single test (first column)."
},
{
"style": "Subtitle",
"text": "Assumptions"
},
{
"style": "List",
"text": "Slippage: 0.1 % in all orders."
},
{
"style": "List",
"text": "Fees: 0.1 % in all orders."
},
{
"style": "Title",
"text": "Technical Sheet",
"updated": 1611678591094
},
{
"style": "Subtitle",
"text": "Market"
},
{
"style": "Text",
"text": "USDT-BTC, with BTC as the base asset."
},
{
"style": "Subtitle",
"text": "Strategy Goal"
},
{
"style": "Text",
"text": "Accumulate bitcoin in a wide range of market situations, with a moderate approach to risk to trade as frequently as possible."
},
{
"style": "Subtitle",
"text": "Approach"
},
{
"style": "Text",
"text": "Split the goal into two fundamental notions:"
},
{
"style": "List",
"text": "1. Target specific market situations: Each strategy in the trading system is specialized in a particular market situation. This allows describing different trading opportunities with very specific conditions for the take position event, and managing the trade taking into account the specific context.",
"updated": 1611678642237
},
{
"style": "List",
"text": "2. Filter out dubious opportunities: Opportunities occurring in specific market situations usually perform poorly and may be filtered out to avoid fails and preserve capital.",
"updated": 1611678652510
},
{
"style": "Subtitle",
"text": "Trading Idea"
},
{
"style": "Text",
"text": "The main trading idea is to identify bounces off the top band of the Bollinger Bands (BB) on the 1-hour chart to take short positions on bitcoin as the price leaves the top band and heads for the lower band."
},
{
"style": "Text",
"text": "Most trades are expected to be short, while others have the potential to run longer while under the management stage."
},
{
"style": "Subtitle",
"text": "Position Size"
},
{
"style": "Text",
"text": "The positionSize is set to balanceBaseAsset by default. This means that the trading system takes positions with the whole balance, that is, the initialBalance as defined in the configuration of the base asset parameter of the trading session, plus all accumulated profits if any. You may change this formula as you see fit."
},
{
"style": "Important",
"text": "Please take enough time to consider the implications of the above statement and make your own judgment about what setting may be appropriate for you.",
"updated": 1611678674857
},
{
"style": "Subtitle",
"text": "Trading Frequency"
},
{
"style": "Text",
"text": "The strategy is designed with the one-hour time frame as the main decision-making instance, meaning that it makes trigger and take position decisions upon the closing of the one-hour candle. That said, when running live on Superalgos, it should be run on the 1-minute time frame to allow quick reactions when evaluating take profit and stop loss targets."
},
{
"style": "Text",
"text": "The average trading frequency according to backtests is of around 1 trade every 11 days."
},
{
"style": "Subtitle",
"text": "Required Bots"
},
{
"style": "Text",
"text": "The following bots must be running and up to date to run paper trading, forward testing, and live trading sessions:"
},
{
"style": "Text",
"text": "Masters Data Mine:"
},
{
"style": "List",
"text": "OHLCVs"
},
{
"style": "List",
"text": "Candles & Volumes"
},
{
"style": "List",
"text": "Bollinger Bands & Percentage Bandwith"
},
{
"style": "List",
"text": "Bollinger Channels & SubChannels"
},
{
"style": "Text",
"text": "Sparta Data Mine:"
},
{
"style": "List",
"text": "EMA"
},
{
"style": "List",
"text": "RSI"
},
{
"style": "Title",
"text": "Implementation"
},
{
"style": "Text",
"text": "The trading system has eight different strategies, each specializing in a specific market situation. This section analyzes the principles governing each stage, taking the first strategy in the system as an example. The rest of the strategies in the system behave similarly, the main differences being:"
},
{
"style": "List",
"text": "Some of the conditions that define the take position event, in particular the ones representing the Market Structure Analysis and Filters (see below)."
},
{
"style": "List",
"text": "The specific conditions used to switch take profit management phases."
},
{
"style": "Title",
"text": "Trigger Stage"
},
{
"style": "Subtitle",
"text": "Trigger On vs. Take Position"
},
{
"style": "Text",
"text": "The conditions at the take position event and the trigger-on event are the same. Therefore, when a strategy is triggered, it also takes a position."
},
{
"style": "Subtitle",
"text": "Trading Idea"
},
{
"style": "Text",
"text": "The trading idea is described by the first three conditions in the take position event, which are common to all strategies:"
},
{
"style": "List",
"text": "Previous Breakup:"
},
{
"style": "Javascript",
"text": "chart.at01hs.candle.previous.close > \nchart.at01hs.bollingerBand.previous.movingAverage +\nchart.at01hs.bollingerBand.previous.deviation",
"updated": 1611678786644
},
{
"style": "Text",
"text": "The condition describes the closing above the upper Bollinger Band of the previous candle."
},
{
"style": "List",
"text": "Current Close In:"
},
{
"style": "Javascript",
"text": "chart.at01hs.candle.close < \nchart.at01hs.bollingerBand.movingAverage + \nchart.at01hs.bollingerBand.deviation",
"updated": 1611678805144
},
{
"style": "Text",
"text": "The condition describes the closing below the upper Bollinger Band of the current candle."
},
{
"style": "List",
"text": "Current Red Candle:"
},
{
"style": "Javascript",
"text": "chart.at01hs.candle.close < chart.at01hs.candle.open"
},
{
"style": "Text",
"text": "The condition serves to confirm that the re-entry happened with a candle closing lower than the opening price—an early indication of a potential short-term reversal."
},
{
"style": "Text",
"text": "In short, these first three conditions describe the fact that the price went above the Bollinger Bands and eventually returned within the bands, which may be a sign that it may bounce back in the direction of the lower band."
},
{
"style": "List",
"text": "Market Structure Analysis"
},
{
"style": "Text",
"text": "The logic for segmenting the market in the particular structures targeted by each of the strategies derives exclusively from studying which market situations produced the best hit ratios while testing the trading idea with symmetrical stop loss and take profit targets. That is, it is purely an empirical approach on what worked best during the span of the dataset tested—from January 2018 until April 2020."
},
{
"style": "Text",
"text": "The criteria the trading system uses to analyze the market structure at the time the opportunity arises (as described by the trading idea) is based on the Bollinger Channels and Bollinger Subchannels indicators. These two indicators describe what is the direction (up or down) and the relative slope (side, gentle, medium, steep or extreme) of the 20-periods simple moving average (SMA)."
},
{
"style": "Text",
"text": "In essence, each strategy specializes in specific market structures as defined by three or four conditions that describe what is going on with the market in two or more time frames."
},
{
"style": "Text",
"text": "In particular, the fourth condition in each strategy defines the main characteristic of the specific market situation that the strategy specializes in."
},
{
"style": "Text",
"text": "For example, in the case of strategy S1 - 3H Down:"
},
{
"style": "List",
"text": "3H - Down:"
},
{
"style": "Javascript",
"text": "chart.at03hs.bollingerChannel.direction === \"Down\""
},
{
"style": "Text",
"text": "The condition defines that the Bollinger Channel direction at the 3-hours time frame is Down."
},
{
"style": "Text",
"text": "The rest of the conditions that define the market structure that strategy S1 - H3 Down specializes in are:"
},
{
"style": "List",
"text": "3H - Medium, Steep or Extreme:"
},
{
"style": "Javascript",
"text": "chart.at03hs.bollingerSubChannel.slope === \"Medium\" || \nchart.at03hs.bollingerSubChannel.slope === \"Steep\" || \nchart.at03hs.bollingerSubChannel.slope === \"Extreme\"",
"updated": 1611678876058
},
{
"style": "Text",
"text": "The condition defines that the 3H sub channel (20-periods moving average) slope must be medium, steep or extreme."
},
{
"style": "Text",
"text": "Combined with the previous condition, the above means that—at the 3H time frame—there is a downward trend, with a relatively high slope."
},
{
"style": "List",
"text": "24H - Gentle:"
},
{
"style": "Javascript",
"text": "chart.at24hs.bollingerSubChannel.slope === \"Gentle\""
},
{
"style": "Text",
"text": "The condition defines that the 24H sub channel has a gentle slope."
},
{
"style": "Text",
"text": "These three conditions define the market structure that this particular strategy targets. Notice how the last condition, 24H - Gentle does not make a distinction whether the channel is going up or down. It simply requires that, whatever the trend is at the 24H chart, it must be gentle in slope."
},
{
"style": "Text",
"text": "The rest of the strategies in the trading system define the market structure in which each operate in a similarly."
},
{
"style": "Subtitle",
"text": "Filters"
},
{
"style": "Text",
"text": "The last few conditions in the take position event of each strategy may be filters. Filters describe particular market situations in which the trading idea has been found to perform poorly and thus are excluded, effectively deciding not to trade in such situations, even when the market situation may be the one the strategy specializes in."
},
{
"style": "Text",
"text": "For example, in the case of strategy S1 - 3H Down, the following filter is applied:"
},
{
"style": "List",
"text": "Filter 1: 08H Deviation > 200 < 1500:"
},
{
"style": "Javascript",
"text": "if (chart.at08hs.bollingerBand.deviation < 200 || chart.at08hs.bollingerBand.deviation > 1500)\n{false} else {true}",
"updated": 1611679006928
},
{
"style": "Text",
"text": "The condition dictates that in case the deviation of the Bollinger Bands at the 8H chart is lower than 200 or higher than 1500, the strategy will not take a postion."
},
{
"style": "Text",
"text": "The deviation of the Bollinger Bands is an indication of volatility, therefore, Filter 1 dictates that when volatility is very low or very high, the opportunity shall not be taken."
},
{
"style": "Callout",
"text": "Let’s unpack the syntax so that non-coders may easily understand it…"
},
{
"style": "Text",
"text": "The core idea of the condition is...",
"updated": 1611678938095
},
{
"style": "Javascript",
"text": "chart.at08hs.bollingerBand.deviation < 200 || \nchart.at08hs.bollingerBand.deviation > 1500",
"updated": 1611678945711
},
{
"style": "Text",
"text": "However, if used in this format, the condition would evaluate true when the deviation is lower than 200 or higher than 1500, which is the opposite of what is intended."
},
{
"style": "Text",
"text": "To reverse the logic so that the condition may act as a filter, a simple if () {} else {} statement is used. This piece of code is evaluated as follows: if the statement between brackets evaluates true, then the code between the first set of curly brackets is returned, else, the code in the second set of curly brackets is returned."
},
{
"style": "Text",
"text": "So, if the condition is meant to prevent the taking of the position when it evaluates true, then the code must return false when the condition evaluates true, and true when the condition evaluates false."
},
{
"style": "Text",
"text": "Any number of filters may be used, and different strategies may use different filters. However, all of them are built with the logic described above, using if () {} else {} statements to reverse the logic of the condition."
},
{
"style": "Title",
"text": "Open Stage"
},
{
"style": "Subtitle",
"text": "Initial Stop"
},
{
"style": "Text",
"text": "The initial stop is set at 3% above the position rate...",
"updated": 1611679041860
},
{
"style": "Javascript",
"text": "(positionRate + positionRate * 3 / 100)",
"updated": 1611679045289
},
{
"style": "Subtitle",
"text": "Initial Take Profit"
},
{
"style": "Text",
"text": "Initial take profit is set 5% below the position rate...",
"updated": 1611679059515
},
{
"style": "Javascript",
"text": "(positionRate - positionRate * 0.05)"
},
{
"style": "Subtitle",
"text": "Position Size"
},
{
"style": "Text",
"text": "The positionSize is set to balanceBaseAsset by default. This means that the trading system takes positions with the whole balance, that is, the initialBalance as defined in the configuration of the base asset parameter of the trading session, plus all accumulated profits if any."
},
{
"style": "Text",
"text": "You may change this formula to fit your specific goals and risk management style."
},
{
"style": "Title",
"text": "Manage Stage"
},
{
"style": "Text",
"text": "The logic behind the management of trades varies between strategies, and is one of the key strategy design elements of the trading system. Being able to apply different management rules to trades that occur in diverse market situations is a highly valuable feature."
},
{
"style": "Text",
"text": "That said, the management is based on the same principles across the trading system, and what may vary across strategies are the specific conditions that implement the switching of phases."
},
{
"style": "Text",
"text": "The following is the overall description of the principles. You may look into the specific rules by analyzing the move to phase events of each strategy."
},
{
"style": "Subtitle",
"text": "Stop Loss Management"
},
{
"style": "Text",
"text": "The intial formula is overriden when a candle closes 3% below the position rate...",
"updated": 1611679099625
},
{
"style": "Javascript",
"text": "(chart.at01hs.candle.previous.close < positionRate - positionRate * 3 / 100)",
"updated": 1611679108566
},
{
"style": "Text",
"text": "There is only one additional phase to manage the stop loss, which sets a trailling stop 2% above the 20-periods moving average...",
"updated": 1611679146316
},
{
"style": "Javascript",
"text": "(if (chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100 < stopLoss) \n{chart.at01hs.bollingerBand.movingAverage + chart.at01hs.bollingerBand.movingAverage * 2 / 100} \nelse {stopLoss})",
"updated": 1611679158118
},
{
"style": "Text",
"text": ""
},
{
"style": "Callout",
"text": "Let’s unpack the syntax, including the if () {} else {} statement you are already familiar with…"
},
{
"style": "Text",
"text": "In this case, the condition being evaluated is...",
"updated": 1611679223835
},
{
"style": "Javascript",
"text": "chart.at01hs.bollingerBand.movingAverage + \nchart.at01hs.bollingerBand.movingAverage * 2 / 100 < \nstopLoss ",
"updated": 1611679229311
},
{
"style": "Text",
"text": "... which intends to determine if the price 2% above the moving average is lower than the current value for the stop loss. In case the statement is true, then the same statement is set as the valid formula to calculate the trailing stop. In case the statement is false, then the stop loss value is left as is."
},
{
"style": "Text",
"text": "In other words, the new stop loss set for the current candle can never be higher than the one set for the previous candle. That is, the stop loss may not increase—it either decreases or stays the same."
},
{
"style": "Subtitle",
"text": "Take Profit Management"
},
{
"style": "Text",
"text": "The initial formula is overriden when the following two conditions in the next phase event validate true:"
},
{
"style": "List",
"text": "1H EMA7 < positionRate:"
},
{
"style": "Javascript",
"text": "chart.at01hs.base7EMA.ema7 < positionRate"
},
{
"style": "Text",
"text": "The 7-periods exponential moving average (EMA) must go below the position rate."
},
{
"style": "List",
"text": "positionPeriods > 2:"
},
{
"style": "Javascript",
"text": "positionPeriods > 2"
},
{
"style": "Text",
"text": "The position must be more than two-periods long."
},
{
"style": "Text",
"text": "The management of take profit targets is handled with three different phases:"
},
{
"style": "Subtitle",
"text": "Manage Phase"
},
{
"style": "Text",
"text": "It is the phase that kicks in once the initial take profit next phase event validates true. The formula for the manage phase is:"
},
{
"style": "Javascript",
"text": "if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03 < \npositionRate - positionRate * 0.03) \n{chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.03} \nelse {positionRate - positionRate * 0.03}",
"updated": 1611679353148
},
{
"style": "Text",
"text": "This means that the take profit target is set 3% below the 7-periods EMA when the resulting value is at least 3% below the position rate. If that is not the case, then the take profit target is set 3% below the position rate."
},
{
"style": "Text",
"text": "The logic behind this formula is that some room should be allowed for the trade to develop, but still, profit shall be taken at 3% if a downward trend does not emerge. If price ranges above the position rate, then the target remains at 3%, pretty much like with the initial setting. If a sudden move or a wick drops to at least 3% below the take position rate, then the take position target is likely to be hit. However, if price starts dropping organically, then the 7 EMA will soon drop below the position rate and the formula will result in a value that is lower than 3% below the position rate, thus, allowing the trade to develop in the expected direction."
},
{
"style": "Subtitle",
"text": "Close Phase"
},
{
"style": "Text",
"text": "The close phase is the phase that is activated every time there is an indication the market may turn against the trade. The take profit formula for this phase is:"
},
{
"style": "Javascript",
"text": "if (chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.deviation < \npositionRate - positionRate * 0.03) \n{chart.at01hs.bollingerBand.movingAverage - chart.at01hs.bollingerBand.standardDeviation * 2} \nelse {positionRate - positionRate * 0.03}",
"updated": 1611679384257
},
{
"style": "Text",
"text": "This means that the take profit target is set to the lower Bollinger Band when the value is at least 3% below the position rate, otherwise, it is set 3% below the position rate."
},
{
"style": "Subtitle",
"text": "Run Phase"
},
{
"style": "Text",
"text": "This is the phase that is activated every time there is an indication that a downtrend may accelerate, favoring the trade and letting it run freely. The take profit formula for this phase is:"
},
{
"style": "Javascript",
"text": "if (chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2 < \npositionRate - positionRate * 0.03) \n{chart.at01hs.base7EMA.ema7 - chart.at01hs.base7EMA.ema7 * 0.2} \nelse {takeProfit}",
"updated": 1611679408922
},
{
"style": "Text",
"text": "The take profit target is set 20% below the 7 EMA if the value is at least 3% below the position rate, which is the most likely scenario, and to 3% below the position rate in case it is not. As hinted earlier, the goal of this phase is to let the trade run freely, still with the trailing stop securing profits 2% above the 7 EMA."
},
{
"style": "Subtitle",
"text": "Switching Phases"
},
{
"style": "Text",
"text": "In general terms, the Manage Phase may switch to both the Close Phase and the Run Phase discretionarily. The Close Phase may cancel the close intention and go back to the Manage Phase, or even go straight to the Run Phase if the market situation demands it. And the Run phase may cancel the run and go back to the Manage Phase."
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/trading-systems/BBTB-TP-Management.png",
"updated": 1611679968101
},
{
"style": "Text",
"text": "The specific conditions for switching from one phase to another phase may vary in each strategy. You may review each particular case to get the details, but conceptually, this is how it works:",
"updated": 1611680120628
},
{
"style": "List",
"text": "Move to Close Phase Event: A convergence between EMA 7 and EMA 14 signals that the downward move is losing steam, thus a switch to the close phase for a tighter take profit target is in order. The close phase may cancel when the convergence recedes and divergence is spotted."
},
{
"style": "List",
"text": "Move to Run Phase Event: A divergence between EMA 7 and EMA 14, confirmed by a divergence between EMA 14 and EMA 21 indicates that the downward trend is deepening and gaining momentum, thus, allowing the trade to run is the best bet, always with a tight top trailing behind the EMA 7. A run may cancel when the divergence recedes and convergence is spotted."
},
{
"style": "Title",
"text": "Warning and Disclaimer"
},
{
"style": "Include",
"text": "Superalgos->Concept->Reusable Snippets->Live Trading Warning",
"updated": 1611680204418
},
{
"style": "Include",
"text": "Superalgos->Concept->Reusable Snippets->Trading System Disclaimer",
"updated": 1611680214453
}
]
}
@@ -4,7 +4,7 @@
"type": "Docs Message - Saving Done",
"definition": {
"text": "The docs.save command was successful and all changes were saved at the Superalgos Client.",
"updated": 1610973296568
"updated": 1611937734586
},
"paragraphs": [
{
@@ -3,7 +3,7 @@
"pageNumber": "3",
"type": "Value Not A Number",
"definition": {
"text": "At runtime some nodes might aquire a value, and when it is expected that the value is a number, this type of error will pop up. To avoid this to happen make yourself sure that at nodes that should have only numeric values, that they don't get by any means a non numeric one.",
"text": "At runtime some nodes might aquire a value, and when it is expected that the value is a number, this type of error will pop up. To avoid this to happen Make sure that at nodes that should have only numeric values, that they don't get by any means a non numeric one.",
"updated": 1611652261727
},
"paragraphs": [
@@ -3,7 +3,7 @@
"pageNumber": "5",
"type": "Value Zero",
"definition": {
"text": "At runtime some nodes might aquire a value, and when it is expected not to be zero this type of error will pop up. To avoid this type of error, make yourself sure that the Node where the error poped up never get a zero value.",
"text": "At runtime some nodes might aquire a value, and when it is expected not to be zero this type of error will pop up. To avoid this type of error, Make sure that the Node where the error poped up never get a zero value.",
"updated": 1611652416098
},
"paragraphs": [
@@ -3,7 +3,7 @@
"pageNumber": "6",
"type": "Value Zero Or Negative",
"definition": {
"text": "At runtime some nodes might aquire a value, and when it is expected not to be zero or negative this type of error will pop up. To avoid this type of error, make yourself sure that the Node where the error poped up never get a zero or negative value.",
"text": "At runtime some nodes might aquire a value, and when it is expected not to be zero or negative this type of error will pop up. To avoid this type of error, Make sure that the Node where the error poped up never get a zero or negative value.",
"updated": 1611652451957
},
"paragraphs": [
@@ -3,7 +3,7 @@
"pageNumber": "8",
"type": "Property Not A Number",
"definition": {
"text": "This type of error means that a property at the config of a node is expected to be a number but the value there it is not. To avoid this type of errors, check the node's config and make yourself sure that the property mentioned is indeed a number.",
"text": "This type of error means that a property at the config of a node is expected to be a number but the value there it is not. To avoid this type of errors, check the node's config and Make sure that the property mentioned is indeed a number.",
"updated": 1611652575431
},
"paragraphs": [
@@ -0,0 +1,15 @@
{
"topic": "Error Causes",
"pageNumber": "9",
"type": "Unexpected Error",
"definition": {
"text": "An Unexpected Error is an error that happened at runtime that does not have a programmed way to handle it, and it usually produces the procedure where it happens to be halted. For those errors we preserve all the information available and display it at the Docs for users to analyze them.",
"updated": 1611733132608
},
"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 doscs.save to save your changes and app.contribute to send it to the main repository."
}
]
}
@@ -29,6 +29,38 @@
"style": "Text",
"text": "To remove a reference or delink two nodes, use the delink button on the node where the reference originates.",
"updated": 1609949517565
},
{
"style": "Title",
"text": "What If the Nodes Are Far Away or in Different Hierarchies?",
"updated": 1611941072895
},
{
"style": "Text",
"text": "The process is exactly the same. All you need to do is master a few tricks so that you may drag one of the nodes all the way to where the second node is.",
"updated": 1611940896508
},
{
"style": "Text",
"text": "These UI tricks may make your life easier:",
"updated": 1611940968078
},
{
"style": "List",
"text": "Use the design space map as many times as required to find your way from one hierarchy to the other.",
"updated": 1611940996169
},
{
"style": "List",
"text": "Pin the node you are going to move across the design space, so that you may drop it at any point to check the design space map for directions."
},
{
"style": "List",
"text": "Use Ctrl / Command + arrow keys to drag the node across the screen after clicking on it with the mouse. Keep keys pressed and the node flies!"
},
{
"style": "List",
"text": "Remove the pin once the reference is established so that the node goes back to its place."
}
]
}
@@ -0,0 +1,24 @@
{
"topic": "Masters Data Mine",
"pageNumber": 1,
"type": "Masters By @Luis-Fernando-Molina",
"definition": {
"text": "The set of indicators built in the Masters data mine include candles, volumes, candle channels, volume channels, Bollinger bands (BB), Percentage Bandwidth (%B), Bollinger Channels, Bollinger Sub-Channels, and Supports and Resistances.",
"updated": 1611685914850
},
"paragraphs": [
{
"style": "Text",
"text": "The Masters data mine is brought to you by...",
"updated": 1611685963401
},
{
"style": "Link",
"text": "@Luis-Fernando-Molina->github.com/Luis-Fernando-Molina"
},
{
"style": "Success",
"text": "Collaborate with this data mine and report issues directly at the Superalgos repository."
}
]
}
@@ -1,7 +1,7 @@
{
"topic": "Masters Data Mine",
"pageNumber": 1,
"type": "Bollinger Bands (BB - %B)",
"pageNumber": 2,
"type": "Bollinger Bands (BB - %B) - Masters Indicator",
"definition": {
"text": "The indicator produces the Bollinger Bands (BB) and Percentage Bandwith (%B), both in standard settings.",
"updated": 1610387450406
@@ -1,7 +1,7 @@
{
"topic": "Masters Data Mine",
"pageNumber": 2,
"type": "Bollinger Channels",
"pageNumber": 3,
"type": "Bollinger Channels - Masters Indicator",
"definition": {
"text": "The indicator produces the Bollinger Channels and Bollinger Sub-Channels products.",
"updated": 1610468458099
@@ -1,7 +1,7 @@
{
"topic": "Masters Data Mine",
"pageNumber": "3",
"type": "Candles Volumes",
"pageNumber": 4,
"type": "Candles Volumes - Masters Indicator",
"definition": {
"text": "The indicator processes one-minute candles into candles and volumes information for all time frames.",
"updated": 1610398384051
@@ -1,7 +1,7 @@
{
"topic": "Masters Data Mine",
"pageNumber": "4",
"type": "Resistances and Supports",
"pageNumber": 5,
"type": "Resistances and Supports - Masters Indicator",
"definition": {
"text": "The indicator keeps track of resistances and supports levels for the entire dataset.",
"updated": 1610398924843
@@ -7,10 +7,14 @@
"updated": 1610219973766
},
"paragraphs": [
{
"style": "Block",
"text": "Opening Orders",
"updated": 1611915623601
},
{
"style": "Text",
"text": "Before creating an order, a few calculations to determine what the order should look like are required, in particular about the rate of the order (see Calculate Order Rate) and the size of the order (see Calculate Order Size).",
"updated": 1610219986275
"text": "Before creating an order, a few calculations to determine what the order should look like are required, in particular about the rate of the order (see Calculate Order Rate) and the size of the order (see Calculate Order Size)."
},
{
"style": "Text",
@@ -33,6 +37,10 @@
"style": "Text",
"text": "If the order is placed successfully, then all related data structures in the trading engine are updated accordingly, including size placed for the stage in both assets, episode counters, and the particular order’s details."
},
{
"style": "Block",
"text": "Calculate Order Rate"
},
{
"style": "Title",
"text": "Calculate Order Rate"
@@ -55,6 +63,10 @@
"text": "tradingEngineOrder.rate.value = tradingEngine.current.episode.candle.close.value",
"updated": 1610220056132
},
{
"style": "Block",
"text": "Calculate Order Size"
},
{
"style": "Title",
"text": "Calculate Order Size"
@@ -110,6 +122,10 @@
"text": "Notice that it is assumed that the target size for the stage is defined both in base asset and the quoted asset. This is because, although the user defines the target size in one asset only, the system converts the definition to the other asset (at an earlier moment), to keep track of accounts on both assets at all times, which is a design requirement.",
"updated": 1610220163303
},
{
"style": "Block",
"text": "Not Passing Target Size Validation"
},
{
"style": "Title",
"text": "Not Passing Target Size Validation"
@@ -171,6 +187,10 @@
"text": "tradingEngineOrder.orderBaseAsset.size.value =\ntradingEngineOrder.orderQuotedAsset.size.value /\ntradingEngineOrder.rate.value",
"updated": 1610220292334
},
{
"style": "Block",
"text": "Not Negative Balance Validation"
},
{
"style": "Title",
"text": "Not Negative Balance Validation"
@@ -20,6 +20,10 @@
"style": "Text",
"text": "Once the synchronization is done, the bot does the accounting (see Accounting), to keep the rest of the variables—like balances and the stage size—up to date with the reality of orders."
},
{
"style": "Block",
"text": "Actual Size Calculation"
},
{
"style": "Title",
"text": "Actual Size Calculation"
@@ -88,6 +92,10 @@
"text": "tradingEngineStage.stageBaseAsset.sizePlaced.value =\ntradingEngineStage.stageBaseAsset.sizePlaced.value -\ntradingEngineOrder.orderBaseAsset.size.value\n\ntradingEngineStage.stageBaseAsset.sizePlaced.value =\ntradingEngineStage.stageBaseAsset.sizePlaced.value +\ntradingEngineOrder.orderBaseAsset.actualSize.value\n\ntradingEngineStage.stageQuotedAsset.sizePlaced.value =\ntradingEngineStage.stageQuotedAsset.sizePlaced.value -\ntradingEngineOrder.orderQuotedAsset.size.value\n\ntradingEngineStage.stageQuotedAsset.sizePlaced.value =\ntradingEngineStage.stageQuotedAsset.sizePlaced.value +\ntradingEngineOrder.orderQuotedAsset.actualSize.value",
"updated": 1610221350195
},
{
"style": "Block",
"text": "Actual Rate Calculation"
},
{
"style": "Title",
"text": "Actual Rate Calculation"
@@ -129,6 +137,10 @@
"style": "Text",
"text": "And remember, the size in the base asset does not need to be recalculated, as it is not affected by the differences in rates."
},
{
"style": "Block",
"text": "Percentage Filled Calculation"
},
{
"style": "Title",
"text": "Percentage Filled Calculation"
@@ -147,6 +159,10 @@
"text": "As you can see, the actual size in the base asset is used, as the size is always denominated in the base asset according to the exchange.",
"updated": 1610221445535
},
{
"style": "Block",
"text": "Fees Paid Calculation"
},
{
"style": "Title",
"text": "Fees Paid Calculation"
@@ -244,6 +260,10 @@
"text": "tradingEngineOrder.orderQuotedAsset.feesPaid.value =\ntradingEngineOrder.orderQuotedAsset.actualSize.value *\nsessionParameters.feeStructure.config.maker / 100 *\ntradingEngineOrder.orderStatistics.percentageFilled.value / 100",
"updated": 1610221607990
},
{
"style": "Block",
"text": "Size Filled Calculation"
},
{
"style": "Title",
"text": "Size Filled Calculation"
@@ -265,6 +285,10 @@
"text": "tradingEngineOrder.orderQuotedAsset.sizeFilled.value =\ntradingEngineOrder.orderQuotedAsset.actualSize.value *\ntradingEngineOrder.orderStatistics.percentageFilled.value / 100",
"updated": 1610221632885
},
{
"style": "Block",
"text": "Amount Received Calculation"
},
{
"style": "Title",
"text": "Amount Received Calculation"
@@ -7,10 +7,14 @@
"updated": 1610221990441
},
"paragraphs": [
{
"style": "Block",
"text": "Content",
"updated": 1611914677651
},
{
"style": "Title",
"text": "Check Cancel Order Event",
"updated": 1610222003919
"text": "Check Cancel Order Event"
},
{
"style": "Text",
@@ -32,6 +32,10 @@
"style": "Text",
"text": "Like with the real synchronization process, once all calculations are done, the trading bot does the bookkeeping (see Accounting)."
},
{
"style": "Block",
"text": "Actual Size Simulation"
},
{
"style": "Title",
"text": "Actual Size Simulation"
@@ -46,10 +50,14 @@
"updated": 1610222816044
},
{
"style": "Title",
"style": "Block",
"text": "Actual Rate Simulation",
"updated": 1610222855123
},
{
"style": "Title",
"text": "Actual Rate Simulation"
},
{
"style": "Text",
"text": "The initial value for the rate of orders is the close of the last candle for market orders, that is, the last known market rate, and the value defined for the rate node in case of limit orders."
@@ -206,6 +214,10 @@
"text": "tradingEngineOrder.orderStatistics.actualRate.value =\ntradingEngine.current.episode.candle.min.value",
"updated": 1610223044937
},
{
"style": "Block",
"text": "Recalculate Actual Size"
},
{
"style": "Title",
"text": "Recalculate Actual Size"
@@ -219,6 +231,10 @@
"text": "tradingEngineOrder.orderQuotedAsset.actualSize.value =\ntradingEngineOrder.orderBaseAsset.actualSize.value *\ntradingEngineOrder.orderStatistics.actualRate.value",
"updated": 1610223069460
},
{
"style": "Block",
"text": "Recalculate Size Placed"
},
{
"style": "Title",
"text": "Recalculate Size Placed"
@@ -236,6 +252,10 @@
"text": "tradingEngineStage.stageQuotedAsset.sizePlaced.value =\ntradingEngineStage.stageQuotedAsset.sizePlaced.value -\npreviousQuotedAssetActualSize\n\ntradingEngineStage.stageQuotedAsset.sizePlaced.value =\ntradingEngineStage.stageQuotedAsset.sizePlaced.value +\ntradingEngineOrder.orderQuotedAsset.actualSize.value",
"updated": 1610223111181
},
{
"style": "Block",
"text": "Percentage Filled Simulation"
},
{
"style": "Title",
"text": "Percentage Filled Simulation"
@@ -302,6 +322,10 @@
"text": "Of course, there is also a check to make sure that the percentage filled is never greater than 100.",
"updated": 1610223219878
},
{
"style": "Block",
"text": "Fees Paid Simulation"
},
{
"style": "Title",
"text": "Fees Paid Simulation"
@@ -388,6 +412,10 @@
"text": "feesPaid =\ntradingEngineOrder.orderQuotedAsset.actualSize.value *\nsessionParameters.feeStructure.config.maker / 100 *\ntradingEngineOrder.orderStatistics.percentageFilled.value / 100",
"updated": 1610223351171
},
{
"style": "Block",
"text": "Size Filled Simulation"
},
{
"style": "Title",
"text": "Size Filled Simulation"
@@ -401,6 +429,10 @@
"text": "tradingEngineOrder.orderBaseAsset.sizeFilled.value =\ntradingEngineOrder.orderBaseAsset.actualSize.value *\ntradingEngineOrder.orderStatistics.percentageFilled.value / 100\ntradingEngineOrder.orderQuotedAsset.sizeFilled.value =\ntradingEngineOrder.orderQuotedAsset.actualSize.value *\ntradingEngineOrder.orderStatistics.percentageFilled.value / 100",
"updated": 1610223373798
},
{
"style": "Block",
"text": "Amount Received Simulation"
},
{
"style": "Title",
"text": "Amount Received Simulation"
@@ -0,0 +1,25 @@
{
"topic": "Sparta Data Mine",
"pageNumber": 1,
"type": "Sparta By @julian-molina",
"definition": {
"text": "The set of indicators built in the Sparta data mine include Simple Moving Average (SMA), Exponential Moving Averege (EMA), Relative Strenght Index (RSI), and Moving Average convergence Divergence (MACD).",
"updated": 1611685345604
},
"paragraphs": [
{
"style": "Text",
"text": "The Sparta data mine is brought to you by...",
"updated": 1611685372883
},
{
"style": "Link",
"text": "@julian-molina->github.com/julian-molina/",
"updated": 1611685413223
},
{
"style": "Success",
"text": "Collaborate with this data mine and report issues directly at the Superalgos repository."
}
]
}
@@ -0,0 +1,89 @@
{
"topic": "Sparta Data Mine",
"pageNumber": 2,
"type": "Simple Moving Average (SMA) - Sparta Indicator",
"definition": {
"text": "The indicator produces the Simple Moving Avarge in multiple settings, including the popular 20, 50, 100, and 200, as well as less frequent base 7 and base 11 SMAs.",
"updated": 1611661320849
},
"paragraphs": [
{
"style": "Title",
"text": "Simple Moving Average On the Charts",
"updated": 1611661332955
},
{
"style": "Text",
"text": "According to Investopedia, “A simple moving average (SMA) is an arithmetic moving average calculated by adding recent closing prices and then dividing that by the number of time frames in the calculation average. Short-term averages respond quickly to changes in the price of the underlying asset, while long-term averages are slow to react.”",
"updated": 1611764485658
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/sparta-bots-layers-01-SMA.gif",
"updated": 1611661370646
},
{
"style": "Text",
"text": ""
},
{
"style": "Text",
"text": "You will find several layers with different settings for SMAs, calculated on different periods. Each layer corresponds to a product made available by the indicator."
},
{
"style": "Text",
"text": "The information panel shows the numeric value for each SMA in the layer, in ascending order (i.e. SMA 20, SMA 50, SMA 100, etc.)."
},
{
"style": "Title",
"text": "Simple Moving Average Products & Properties"
},
{
"style": "Text",
"text": "There are three products pre-configured to start calculating as soon as you start the corresponding task, each with different period configurations:"
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Properties |\n| Popular SMAs | popularSMA | sma20, sma50, sma100, sma200 |\n| Base 7 | base7SMA | sma7, sma14, sma21, sma28, sma35, sma70, sma140, sma210, sma280, sma350, sma700, sma1400 |\n| Base 11 | base11SMA | sma11, sma22, sma33, sma55, sma111 |",
"updated": 1611661544067
},
{
"style": "Text",
"text": "There are four more products available but they will not be calculated unless you create the corresponding data outputs and reference them to the corresponding data sets:",
"updated": 1611661553639
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Properties |\n| Base 5 | base5SMA | sma5, sma10, sma15, sma20, sma25, sma50, sma100, sma150, sma200, sma250, sma500, sma1000 |\n| Base 6 | base6SMA | sma6, sma12, sma18, sma24, sma30, sma60, sma120, sma180, sma240, sma300, sma600, sma1200 |\n| Base 12 | base12SMA | sma12, sma24, sma36, sma48, sma60, sma120, sma240, sma360, sma480, sma600, sma1200 |\n| Base 30 | base30SMA | sma30, sma60, sma90, sma120, sma150, sma300, sma600, sma900, sma1200, sma1500 |",
"updated": 1611661663605
},
{
"style": "Text",
"text": "Examples:",
"updated": 1611661674316
},
{
"style": "Javascript",
"text": "chart.at24hs.popularSMA.sma50 > chart.at24hs.popularSMA.sma200",
"updated": 1611661680380
},
{
"style": "Text",
"text": "An indication of a bull market? Is the 50-day moving average above the 200-day moving average?"
},
{
"style": "Javascript",
"text": "chart.at24hs.popularSMA.sma200 > chart.at24hs.base7SMA.sma350",
"updated": 1611661686525
},
{
"style": "Text",
"text": "Looking even further in the past, comparing a 200-day with a 350-day moving average. Notice how the two MA belong to different products."
},
{
"style": "Table",
"text": "aaasd\nasdf",
"updated": 1611661523824
}
]
}
@@ -0,0 +1,70 @@
{
"topic": "Sparta Data Mine",
"pageNumber": 3,
"type": "Exponential Moving Average (EMA) - Sparta Indicator",
"definition": {
"text": "The indicator produces the Exponential Moving Avarge in multiple settings, including the popular 20, 50, 100, and 200, as well as less frequent base 7 and base 11 SMAs.",
"updated": 1611661783066
},
"paragraphs": [
{
"style": "Title",
"text": "Exponential Moving Average On the Charts",
"updated": 1611661800711
},
{
"style": "Text",
"text": "According to Investopedia, “An exponential moving average (EMA) is a type of moving average (MA) that places a greater weight and significance on the most recent data points. The exponential moving average is also referred to as the exponentially weighted moving average. An exponentially weighted moving average reacts more significantly to recent price changes than a simple moving average (SMA), which applies an equal weight to all observations in the period.”"
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/sparta-bots-layers-02-EMA.gif",
"updated": 1611661878694
},
{
"style": "Text",
"text": "The same explanations offered for SMAs apply to EMAs."
},
{
"style": "Title",
"text": "Exponential Moving Average Products & Properties"
},
{
"style": "Text",
"text": "The products and periods available in EMA map exactly the products and periods available in SMA. To use EMA you simply need to replace the S with an E. That said, for your reference, this is the complete list…"
},
{
"style": "Text",
"text": "Like with SMAs, there are three products pre-configured to start calculating as soon as you start the corresponding task, each with different period configurations:"
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Properties |\n| Popular EMAs | popularEMA | ema20, ema50, ema100, ema200 |\n| Base 7 | base7EMA | ema7, ema14, ema21, ema28, ema35, ema70, ema140, ema210, ema280, ema350, ema700, ema1400 |\n| Base 11 | base11EMA | ema11, ema22, ema33, ema55, ema111 |",
"updated": 1611661980687
},
{
"style": "Text",
"text": "There are four more products available but they will not be calculated unless you create the corresponding data outputs and reference them to the corresponding data sets:",
"updated": 1611661993834
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Properties |\n| Base 5 | base5EMA | ema5, ema10, ema15, ema20, ema25, ema50, ema100, ema150, ema200, ema250, ema500, ema1000 |\n| Base 6 | base6EMA | ema6, ema12, ema18, ema24, ema30, ema60, ema120, ema180, ema240, ema300, ema600, ema1200 |\n| Base 12 | base12EMA | ema12, ema24, ema36, ema48, ema60, ema120, ema240, ema360, ema480, ema600, ema1200 |\n| Base 30 | base30EMA | ema30, ema60, ema90, ema120, ema150, ema300, ema600, ema900, ema1200, ema1500 |",
"updated": 1611662076042
},
{
"style": "Text",
"text": "Examples:",
"updated": 1611662085941
},
{
"style": "Javascript",
"text": "chart.at01hs.base5EMA.ema5 < chart.at01hs.base5EMA.ema25",
"updated": 1611662091882
},
{
"style": "Text",
"text": "May the trend be reversing? Checking if a fast 5-hours exponential moving average goes below the slower 25-hours EMA."
}
]
}
@@ -0,0 +1,62 @@
{
"topic": "Sparta Data Mine",
"pageNumber": 4,
"type": "Relative Strenght Index (RSI) - Sparta Indicator",
"definition": {
"text": "The indicator produces the standard 14 setting of the Relative Strenght Index.",
"updated": 1611662214310
},
"paragraphs": [
{
"style": "Title",
"text": "Relative Strength Index On the Charts",
"updated": 1611662231228
},
{
"style": "Text",
"text": "According to Investopedia, “The relative strength index (RSI) is a momentum indicator that measures the magnitude of recent price changes to evaluate overbought or oversold conditions in the price of a stock or other asset. The RSI is displayed as an oscillator (a line graph that moves between two extremes) and can have a reading from 0 to 100.”"
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/indicators/sparta-bots-layers-00-RSI.gif",
"updated": 1611662270956
},
{
"style": "Text",
"text": "The chart for this indicator shows the RSI oscillating in a scale ranging from 0 at the bottom to 100 at the top. The bottom section of the chart shows a blue background covering the range from 0 to 20, also marked by a dotted line. When the RSI value falls below the 20 mark, the RSI line turns red, for easier viasualization. Also in the bottom section, there is a second dotted line signaling the 30 mark."
},
{
"style": "Text",
"text": "The equivalent (although reversed) effect is featured on the top half of the charts, with dotted lines signaling the 70 and 80 levels, and a blue background above 80."
},
{
"style": "Text",
"text": "There is also a dotted line at the 50 mark, signaling the median of the chart."
},
{
"style": "Text",
"text": "For the time being, the chart is fixed on the screen and the user may not move it."
},
{
"style": "Title",
"text": "Relative Strength Index Products & Properties"
},
{
"style": "Text",
"text": "The RSI product currently available uses the standard setting of 14 periods, and features a single property: rsi14.value"
},
{
"style": "Text",
"text": "Examples:"
},
{
"style": "Javascript",
"text": "chart.at24hs.rsi14.value >= 70",
"updated": 1611662294248
},
{
"style": "Text",
"text": "How’s the trend going at the 24-hours chart?"
}
]
}
@@ -0,0 +1,62 @@
{
"topic": "Sparta Data Mine",
"pageNumber": 5,
"type": "Moving Average Convergence Divergence (MACD) - Sparta Indicator",
"definition": {
"text": "The indicator produces de MACD indicator in the most popular 12, 26, 9 setting, and the following less usual settings: a fast 3, 10, 16, an intermediate 8, 17, 9, and a slow 24, 52, 9.",
"updated": 1611662439678
},
"paragraphs": [
{
"style": "Text",
"text": "Moving Average Convergence/Divergence Products & Properties",
"updated": 1611662450791
},
{
"style": "Text",
"text": "There are four different products, each configured with a specific setting for the fast and slow moving avarages and the MACD Signal line."
},
{
"style": "Table",
"text": "| Product Setting | Product Variable | Properties |\n| MACD (12, 26, 9) | macd122609 | ema12, ema26 |\n| MACD (3, 10, 16) | macd031016 | ema3, ema10 |\n| MACD (8, 17, 9) | macd081709 | ema8, ema17 |\n| MACD (24, 52, 9) | macd245209 | ema24, ema52 |",
"updated": 1611662546677
},
{
"style": "Text",
"text": "The first few variables you may use from these products are those corresponding to the EMAs used to calculate the MACD line and the MACD signal line, as shown in the table above.",
"updated": 1611662568834
},
{
"style": "Text",
"text": "Also, each of the products in the above table feature the following properties:"
},
{
"style": "Table",
"text": "| Property | Description |\n| line | The MACD line, that is, the fast EMA minus the slow EMA. |\n| signal | The Signal line, that is, the n-period EMA of the MACD line (n is the last setting) |\n| histogram | The value of the histogram, that is, the difference between the MACD line and the MACD signal line. |",
"updated": 1611662631591
},
{
"style": "Text",
"text": "Examples:",
"updated": 1611662641354
},
{
"style": "Javascript",
"text": "chart.at30min.macd122609.line <= 0 && chart.at30min.macd122609.previous.line >= 0",
"updated": 1611662656647
},
{
"style": "Text",
"text": "A centerline crossover at the 30-minutes chart."
},
{
"style": "Javascript",
"text": "chart.at15min.macd031016.line >= chart.at15min.macd031016.signal && \nchart.at15min.macd031016.previous.line <= chart.at15min.macd031016.previous.signal",
"updated": 1611662681719
},
{
"style": "Text",
"text": "A signal line crossover at the 15-minutes chart."
}
]
}
@@ -3,14 +3,14 @@
"pageNumber": "1",
"type": "TS LF Trading Bot Error - Evaluating Condition Error",
"definition": {
"text": "An error occured while evaluation a User Defined Condition at the Trading System.",
"updated": 1611568961215
"text": "An error occured while evaluating a user defined Condition in the Trading System.",
"updated": 1611925832560
},
"paragraphs": [
{
"style": "Text",
"text": "While running at the TS, the Low Frequency Trading Bot encountered an error while trying to evaluate one of your conditions defined at the Trading System. Conditions are arbitrary Javascript Code that user can write as they want and in some cases they do not write valid Javascript for Nod JS. ",
"updated": 1611569329977
"text": "While running at the TS, the LF Trading Bot encountered an error trying to evaluate one of the conditions defined in the Trading System. Conditions are arbitrary Javascript Code that users may write. The code must be valid Javascript for Node JS.",
"updated": 1611925986913
},
{
"style": "Error",
@@ -19,15 +19,15 @@
},
{
"style": "Title",
"text": "Error Details"
"text": "Error Info"
},
{
"style": "Text",
"text": "In the following section you will find the specific information received when this error occured."
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Success",
"text": "You will only see it if you opened this page as a result of the error actually happening.",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611569373599
},
{
@@ -62,7 +62,7 @@
},
{
"style": "Text",
"text": "The follwing is the Error Code of the Exception that occured at the LF Trading Bot:",
"text": "The following is the Error Code of the Exception that occured at the LF Trading Bot:",
"updated": 1611569440715
},
{
@@ -75,7 +75,7 @@
},
{
"style": "Text",
"text": "The follwing are all the Error details of the Exception that occured at the LF Trading Bot:",
"text": "The following are all the Error details of the Exception that occured at the LF Trading Bot:",
"updated": 1611569446711
},
{
@@ -89,7 +89,7 @@
},
{
"style": "Text",
"text": "The follwing is the node's name of the Node most related to this error:",
"text": "The following is the node's name of the Node most related to this error:",
"updated": 1611571455498
},
{
@@ -102,7 +102,7 @@
},
{
"style": "Text",
"text": "The follwing is the code stored at the node that produced the error at the LF Trading Bot:",
"text": "The following is the code stored at the node that produced the error at the LF Trading Bot:",
"updated": 1611569545869
},
{
@@ -110,6 +110,15 @@
"text": "nodeCode",
"updated": 1611569590234
},
{
"style": "Title",
"text": "Learn More",
"updated": 1611926049613
},
{
"style": "List",
"text": "Syntax Overview"
},
{
"style": "Text",
"text": ""
@@ -3,14 +3,14 @@
"pageNumber": "2",
"type": "TS LF Trading Bot Error - Evaluating Formula Error",
"definition": {
"text": "An error occured while evaluation a User Defined Formula at the Trading System.",
"updated": 1611568961215
"text": "An error occured while evaluatiing a user-defined Formula at the Trading System.",
"updated": 1611926309593
},
"paragraphs": [
{
"style": "Text",
"text": "While running at the TS, the Low Frequency Trading Bot encountered an error while trying to evaluate one of your formulas defined at the Trading System. Formulas are arbitrary Javascript Code that user can write as they want and in some cases they do not write valid Javascript for Nod JS. ",
"updated": 1611569329977
"text": "While running at the TS, the LF Trading Bot encountered an error trying to evaluate one of the formulas defined in the Trading System. Formulas are arbitrary Javascript Code that users may write. The code must be valid Javascript for Node JS.",
"updated": 1611926279221
},
{
"style": "Error",
@@ -19,15 +19,15 @@
},
{
"style": "Title",
"text": "Error Details"
"text": "Error Info"
},
{
"style": "Text",
"text": "In the following section you will find the specific information received when this error occured."
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Success",
"text": "You will only see it if you opened this page as a result of the error actually happening.",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611569373599
},
{
@@ -62,7 +62,7 @@
},
{
"style": "Text",
"text": "The follwing is the Error Code of the Exception that occured at the LF Trading Bot:",
"text": "The following is the Error Code of the Exception that occured at the LF Trading Bot:",
"updated": 1611569440715
},
{
@@ -75,7 +75,7 @@
},
{
"style": "Text",
"text": "The follwing are all the Error details of the Exception that occured at the LF Trading Bot:",
"text": "The following are all the Error details of the Exception that occured at the LF Trading Bot:",
"updated": 1611569446711
},
{
@@ -89,7 +89,7 @@
},
{
"style": "Text",
"text": "The follwing is the node's name of the Node most related to this error:",
"text": "The following is the node's name of the Node most related to this error:",
"updated": 1611571455498
},
{
@@ -102,7 +102,7 @@
},
{
"style": "Text",
"text": "The follwing is the code stored at the node that produced the error at the LF Trading Bot:",
"text": "The following is the code stored at the node that produced the error at the LF Trading Bot:",
"updated": 1611569545869
},
{
@@ -3,14 +3,14 @@
"pageNumber": "3",
"type": "TS LF Trading Bot Error - Formula Value Not A Number",
"definition": {
"text": "When evaluated by teh LF Trading Bot, a Formula must return a numeric value. In this case it did not, and for that reason this error happened..",
"updated": 1611568961215
"text": "Formulas must always evaluate to a number. When they don't, this error happens.",
"updated": 1611926524667
},
"paragraphs": [
{
"style": "Text",
"text": "While running at the TS, the Low Frequency Trading Bot encountered an error while trying to evaluate one of your formulas defined at the Trading System. Formulas are supposed to return a numeric value an this one did not.",
"updated": 1611579417164
"text": "While running at the TS, the LF Trading Bot encountered an error trying to evaluate one of the formulas defined in the Trading System. Formulas are expected to return a numeric value.",
"updated": 1611926775403
},
{
"style": "Error",
@@ -19,15 +19,15 @@
},
{
"style": "Title",
"text": "Error Details"
"text": "Error Info"
},
{
"style": "Text",
"text": "In the following section you will find the specific information received when this error occured."
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Success",
"text": "You will only see it if you opened this page as a result of the error actually happening.",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611569373599
},
{
@@ -37,7 +37,7 @@
},
{
"style": "Text",
"text": "The follwing is the node's name of the Node most related to this error:",
"text": "The following is the node's name of the Node most related to this error:",
"updated": 1611571455498
},
{
@@ -50,7 +50,7 @@
},
{
"style": "Text",
"text": "The follwing is the code stored at the node that produced the error at the LF Trading Bot:",
"text": "The following is the code stored at the node that produced the error at the LF Trading Bot:",
"updated": 1611569545869
},
{
@@ -65,7 +65,7 @@
},
{
"style": "Text",
"text": "The follwing is the value of the node at the moment that this error happened at the LF Trading Bot:",
"text": "The following is the value of the node at the moment that this error happened at the LF Trading Bot:",
"updated": 1611579550831
},
{
@@ -3,8 +3,8 @@
"pageNumber": "4",
"type": "TS LF Trading Bot Error - Reference to Phase Node Missing",
"definition": {
"text": "The Move To Phase Event Node where this error poped up is expected to reference a Phase Node so that when all conditions are met, the LF Trading Bot can swith to the referenced Phase.",
"updated": 1611581788332
"text": "The Move To Phase Event node where this error originated is expected to reference a Phase node so that—when all conditions are met—the LF Trading Bot may switch to the referenced Phase.",
"updated": 1611929416928
},
"paragraphs": [
{
@@ -14,7 +14,21 @@
},
{
"style": "Success",
"text": "To fix this, simply establish a reference from this Node to a Phase node."
"text": "To fix this, establish a reference from the Move To Phase Event node to a Phase node.",
"updated": 1611929817733
},
{
"style": "Title",
"text": "Learn More",
"updated": 1611929521725
},
{
"style": "List",
"text": "Establish and Remove References"
},
{
"style": "List",
"text": "Move To Phase Event"
}
]
}
@@ -3,14 +3,14 @@
"pageNumber": "5",
"type": "TS LF Trading Bot Error - Maximum Balance Reached",
"definition": {
"text": "The execution of the Trading System was halted because the maximun balance configured was reached. ",
"updated": 1611588526786
"text": "The Trading Session stopped because the maximum balance configured for the session was reached.",
"updated": 1611937963838
},
"paragraphs": [
{
"style": "Text",
"text": "You are allowed to configure at the Session Base Asset and Session Quoted Asset nodes a maximum balance. If you do that -- because it is optional -- the LF Trading Bot will check at every candle during the Trading Simulation that the balance has not reached that maximum. If it does, this error is triggered and the Trading System stops it's execution inmediatelly.",
"updated": 1611588663021
"text": "The Session Base Asset and Session Quoted Asset Trading Parameters enable the setting of a maximumBalance. The parameter is optional. When you use it, the LF Trading Bot checks—for every candle during the Trading Session—that the balance has not reached the configured maximum. If it does, this error is triggered and the Trading Session stops immediatelly.",
"updated": 1611930588291
},
{
"style": "Error",
@@ -18,7 +18,7 @@
},
{
"style": "Title",
"text": "Context Information"
"text": "Context Info"
},
{
"style": "Text",
@@ -29,6 +29,16 @@
"style": "Placeholder",
"text": "contextInfo",
"updated": 1611589783431
},
{
"style": "Include",
"text": "Superalgos->Node->Session Base Asset->Configuring",
"updated": 1611930154766
},
{
"style": "Include",
"text": "Superalgos->Node->Session Quoted Asset->Configuring",
"updated": 1611930177136
}
]
}
@@ -3,14 +3,14 @@
"pageNumber": "6",
"type": "TS LF Trading Bot Error - Minimum Balance Reached",
"definition": {
"text": "The execution of the Trading System was halted because the minimun balance configured was reached. ",
"updated": 1611588526786
"text": "The Trading Session stopped because the minimum balance configured for the session was reached.",
"updated": 1611937955267
},
"paragraphs": [
{
"style": "Text",
"text": "You are allowed to configure at the Session Base Asset and Session Quoted Asset nodes a minimum balance. If you do that -- because it is optional -- the LF Trading Bot will check at every candle during the Trading Simulation that the balance has not reached that minimum. If it does, this error is triggered and the Trading System stops it's execution inmediatelly.",
"updated": 1611588663021
"text": "The Session Base Asset and Session Quoted Asset Trading Parameters enable the setting of a minimumBalance. The parameter is optional. When you use it, the LF Trading Bot checks—for every candle during the Trading Session—that the balance has not reached the configured minimum. If it does, this error is triggered and the Trading Session stops immediatelly.",
"updated": 1611934902255
},
{
"style": "Error",
@@ -18,7 +18,7 @@
},
{
"style": "Title",
"text": "Context Information"
"text": "Context Info"
},
{
"style": "Text",
@@ -3,18 +3,23 @@
"pageNumber": "7",
"type": "TS LF Trading Bot Error - Initial Targets Node Missing",
"definition": {
"text": "A Initial Targets Node was expected but not found at the node where the error poped up.",
"updated": 1611595619753
"text": "An Initial Targets node was expected but not found at the node where the error originated.",
"updated": 1611938198885
},
"paragraphs": [
{
"style": "Text",
"text": "The Trading Session may run without the Open Stage, Manage Stage, and Close Stage nodes present. But if a stage exists, then the required nodes within must be properly defined.",
"updated": 1611938347979
},
{
"style": "Error",
"text": "Initial Targets Node Missing",
"updated": 1611597134772
"text": "Initial Targets Node Missing"
},
{
"style": "Success",
"text": "Add the missing node and try again."
"text": "Add the missing node and try again. The session will not run free of errors until all required nodes are defined.",
"updated": 1611938473498
}
]
}
@@ -3,10 +3,15 @@
"pageNumber": "8",
"type": "TS LF Trading Bot Error - Target Rate Node Missing",
"definition": {
"text": "A Target Rate Node was expected but not found at the node where the error poped up.",
"updated": 1611595784678
"text": "A Target Rate node was expected but not found at the node where the error originated.",
"updated": 1611939274814
},
"paragraphs": [
{
"style": "Text",
"text": "The Trading Session may run without the Open Stage, Manage Stage, and Close Stage nodes present. But if a stage exists, then the required nodes within must be properly defined.",
"updated": 1611938347979
},
{
"style": "Error",
"text": "Target Rate Node Missing",
@@ -14,7 +19,8 @@
},
{
"style": "Success",
"text": "Add the missing node and try again."
"text": "Add the missing node and try again. The session will not run free of errors until all required nodes are defined.",
"updated": 1611939243926
}
]
}
@@ -3,8 +3,8 @@
"pageNumber": "9",
"type": "TS LF Trading Bot Error - Formula Node Missing",
"definition": {
"text": "A Formula Node was expected but not found at the node where the error poped up.",
"updated": 1611595849189
"text": "A Formula node was expected but not found at the node where the error originated.",
"updated": 1611939289307
},
"paragraphs": [
{
@@ -14,7 +14,8 @@
},
{
"style": "Success",
"text": "Add the missing node and try again."
"text": "Add the missing node and try again. The session will not run free of errors until all required nodes are defined.",
"updated": 1611939303905
}
]
}
@@ -3,8 +3,8 @@
"pageNumber": "10",
"type": "TS LF Trading Bot Error - Target Rate Node Value Undefined",
"definition": {
"text": "The value of the Target Rate Node can not be undefined.",
"updated": 1611595915288
"text": "The value of the Target Rate node can not be undefined.",
"updated": 1611939319876
},
"paragraphs": [
{
@@ -14,7 +14,8 @@
},
{
"style": "Success",
"text": "Check the Formula and try again."
"text": "Check the Formula and try again. The session will not run free of errors until all required nodes are defined.",
"updated": 1611939330494
}
]
}
@@ -3,8 +3,8 @@
"pageNumber": "11",
"type": "TS LF Trading Bot Error - Target Rate Node Value Not A Number",
"definition": {
"text": "The value of the Target Rate Node must be a number.",
"updated": 1611596016533
"text": "The value of the Target Rate node must be a number.",
"updated": 1611939346987
},
"paragraphs": [
{
@@ -3,8 +3,8 @@
"pageNumber": "12",
"type": "TS LF Trading Bot Error - Only One Target Size Allowed",
"definition": {
"text": "You can not define a Target Size In Base Asset and a Target Size In Quoted Asset simultaneously. You need to pick one of the two and delete the not chosen one.",
"updated": 1611596226356
"text": "You can not define a Target Size In Base Asset and a Target Size In Quoted Asset simultaneously. You must pick one of the two and delete the remaining one.",
"updated": 1611939554501
},
"paragraphs": [
{
@@ -14,7 +14,8 @@
},
{
"style": "Success",
"text": "Check the Formula and try again."
"text": "Check the Formula and try again. The session will not run free of errors until all required nodes are defined.",
"updated": 1611939664455
}
]
}
@@ -3,8 +3,8 @@
"pageNumber": "14",
"type": "TS LF Trading Bot Error - Target Size Value Zero",
"definition": {
"text": "The Target Size can not be Zero, and that was what was found.",
"updated": 1611596320709
"text": "The Target Size can not be zero, and that is what the Formula evaluates at the moment.",
"updated": 1611939963824
},
"paragraphs": [
{
@@ -14,7 +14,8 @@
},
{
"style": "Success",
"text": "Make yourself sure that the Formula you defined does ont evaluate to Zero, and try again."
"text": "Make sure that the Formula you defined does not evaluate to zero, and try again.",
"updated": 1611939957191
}
]
}
@@ -3,8 +3,8 @@
"pageNumber": "15",
"type": "TS LF Trading Bot Error - Order Reference Missing",
"definition": {
"text": "Each order at the Trading System is expected to have a reference to an order at the Trading Engine Data Structure. This references tells the system where to track at runtime the values of the order properties while the bot is running.",
"updated": 1611649597701
"text": "Each order in the Trading System is expected to reference an order of the same type in the Trading Engine Data Structure. This reference tells the system where to track the values of the order properties while the bot is running.",
"updated": 1611940524337
},
"paragraphs": [
{
@@ -14,7 +14,8 @@
},
{
"style": "Success",
"text": "Set up the reference to an order of the Trading Engine and try again."
"text": "Set up the reference to an order of the same type in the Trading Engine and try again. Learn how to Establish and Remove References.",
"updated": 1611940690458
}
]
}
@@ -3,8 +3,8 @@
"pageNumber": "16",
"type": "TS LF Trading Bot Error - Status Node Missing",
"definition": {
"text": "A Status Node was expected but not found at the node where the error poped up.",
"updated": 1611649715787
"text": "A Status node was expected but not found at the node where the error originated.",
"updated": 1611941288814
},
"paragraphs": [
{
@@ -3,7 +3,8 @@
"pageNumber": "17",
"type": "TS LF Trading Bot Error - Percentage Of Algorithm Size Property Missing",
"definition": {
"text": "Write a summary for this topic page."
"text": "You must specify what percentage of the Size handled by the Execution Algorithm is to be handled by the Order.",
"updated": 1611941594343
},
"paragraphs": [
{
@@ -13,7 +14,8 @@
},
{
"style": "Success",
"text": "Add the missing property and try again."
"text": "Check the order's configuration and make sure the percentageOfAlgorithmSize property exists and is defined with a number greater than zero.",
"updated": 1611941646766
}
]
}
Loaded 100 of 201 files, more files were not shown because too many files have changed in this diff. Show more