From 55342ef96758d030503e2e49361dfb6ce1a64dd6 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 2 Apr 2020 12:17:35 +0200 Subject: [PATCH] bug fixed when drag started on charts --- CanvasApp/ChartingSpace/EdgeEditor.js | 4 ++++ CanvasApp/Container.js | 2 +- CanvasApp/Spaces/PanelsSpace.js | 2 +- Super-Scripts/Superalgos.json | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CanvasApp/ChartingSpace/EdgeEditor.js b/CanvasApp/ChartingSpace/EdgeEditor.js index df338ece4..ed34a50f4 100644 --- a/CanvasApp/ChartingSpace/EdgeEditor.js +++ b/CanvasApp/ChartingSpace/EdgeEditor.js @@ -186,24 +186,28 @@ function newEdgeEditor () { const STEP = 10 if (event.shiftKey === false && event.ctrlKey === false && event.code === 'ArrowLeft') { + onDragStarted(event) thisObject.container.frame.position.x = thisObject.container.frame.position.x + STEP whatHappened = 'left or right arrow key pressed' return } if (event.shiftKey === false && event.ctrlKey === false && event.code === 'ArrowRight') { + onDragStarted(event) thisObject.container.frame.position.x = thisObject.container.frame.position.x - STEP whatHappened = 'left or right arrow key pressed' return } if (event.shiftKey === false && event.ctrlKey === false && event.code === 'ArrowUp') { + onDragStarted(event) thisObject.container.frame.position.y = thisObject.container.frame.position.y + STEP whatHappened = 'up or down arrow key pressed' return } if (event.shiftKey === false && event.ctrlKey === false && event.code === 'ArrowDown') { + onDragStarted(event) thisObject.container.frame.position.y = thisObject.container.frame.position.y - STEP whatHappened = 'up or down arrow key pressed' return diff --git a/CanvasApp/Container.js b/CanvasApp/Container.js index a4a0b5901..56cf14085 100644 --- a/CanvasApp/Container.js +++ b/CanvasApp/Container.js @@ -1,7 +1,7 @@ function newContainer () { let thisObject = { - id: Math.trunc(Math.random() * 10000000), + id: newUniqueId(), type: 'Rectangle', frame: undefined, eventHandler: undefined, diff --git a/CanvasApp/Spaces/PanelsSpace.js b/CanvasApp/Spaces/PanelsSpace.js index fbfb144f6..28ffa303f 100644 --- a/CanvasApp/Spaces/PanelsSpace.js +++ b/CanvasApp/Spaces/PanelsSpace.js @@ -71,7 +71,7 @@ function newPanelsSpace () { panel.owner = pOwner thisObject.panels.push(panel) - panel.handle = Math.floor((Math.random() * 10000000) + 1) + panel.handle = newUniqueId() return panel.handle } diff --git a/Super-Scripts/Superalgos.json b/Super-Scripts/Superalgos.json index 9b3518fe7..8d48451d6 100644 --- a/Super-Scripts/Superalgos.json +++ b/Super-Scripts/Superalgos.json @@ -1 +1 @@ -{"type":"Super Scripts","name":"Superalgos","code":"{ \n\"codeName\": \"Superalgos\"\n}","scriptsLibrary":{"type":"Scripts Library","name":"New Scripts Library","masterScripts":[{"type":"Master Script","name":"Setup Market","templateScripts":[{"type":"Template Script","name":"Install Single Market Data","templateStructure":{"type":"Template Structure","name":"New Template Structure","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Candles","id":"24c5f795-acf3-43c3-99ee-ddb521b082f4","savedPayload":{"position":{"x":39921.72808500414,"y":29011.239540561746},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"204ec959-0861-486a-aa2a-276dbf48f775","savedPayload":{"position":{"x":39899.18996162789,"y":28906.437038861084},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candle-Stairs","id":"90ee9733-ab7e-41a0-ac78-4a7661a27017","savedPayload":{"position":{"x":39894.34302782561,"y":28800.15900804723},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candle-Stairs","id":"642474e9-da61-4168-97dc-7f7869bebc02"}}},{"type":"Data Product","name":"Volume-Stairs","id":"9ade8e93-9071-422b-8cce-7a50d6dad739","savedPayload":{"position":{"x":39907.122112782716,"y":28694.36575210638},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volume-Stairs","id":"846e9572-c4d6-4c7e-942e-c82402c5ecea"}}},{"type":"Data Product","name":"Bollinger Bands","id":"b5ef2cf7-3d35-45ec-848c-31970b59c04e","savedPayload":{"position":{"x":39937.14551746402,"y":28592.151020182675},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"1c3881ca-24b3-4cc9-b16b-9db7aa2b4c24","savedPayload":{"position":{"x":39983.58525246108,"y":28496.28744561276},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"92eec33b-86be-4b73-899f-e9550f7b0df3","savedPayload":{"position":{"x":40045.170879966965,"y":28409.383052281606},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"4b69df71-9091-4d22-9b0d-571304297033","savedPayload":{"position":{"x":40120.220836442306,"y":28333.805138252766},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}},{"type":"Data Product","name":"Popular SMAs","id":"8a5f7e27-9ca5-4d6e-b6b9-2d6cbdda8040","savedPayload":{"position":{"x":40206.68717504581,"y":28271.61367628522},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"ccd9c3fd-3382-4fea-8798-a29b04efc09e","savedPayload":{"position":{"x":40302.21100517094,"y":28224.504372242965},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"aebc2010-a6e2-436d-8cc6-96eb0689330d","savedPayload":{"position":{"x":40404.18667346443,"y":28193.762149223578},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"0fd4ef59-77b4-48cc-b00e-6a529a05cb0c","savedPayload":{"position":{"x":40509.83280886432,"y":28180.226095185222},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"802917a7-816b-4e4c-bbb6-a0eaf9eb7429","savedPayload":{"position":{"x":40615.989825939425,"y":28184.268392404625},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"9109bfcb-70e7-4cf8-9047-da9567668082","savedPayload":{"position":{"x":40720.308190163596,"y":28205.779550509957},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"519a89d4-75bb-4c33-a63d-d65c9defbd12","savedPayload":{"position":{"x":40819.67439937884,"y":28244.18002829642},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"6ae3a0ab-86cf-4e81-b415-5775dfcb1d9c","savedPayload":{"position":{"x":40911.383151904,"y":28298.43982328907},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"f4d7169e-8c26-48ae-967d-529a8ecab1f1","savedPayload":{"position":{"x":40992.961894250446,"y":28367.139474001415},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"bae79086-c788-4b79-a9af-952326480b34","savedPayload":{"position":{"x":41062.39609896124,"y":28448.821136237813},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}}],"id":"3c9e658e-9350-4b43-b95c-1dc9fbb7de7b","savedPayload":{"position":{"x":40539.078074386875,"y":28820.353383591115},"targetPosition":{"x":40823.9160338709,"y":29398.01243044707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"922126c5-3b95-4c76-90ce-c85435c49624","savedPayload":{"position":{"x":40819.463820159865,"y":29399.198001998433},"targetPosition":{"x":41022.02894666333,"y":29779.575586990853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"79c82a1e-4c4e-4622-b762-4ccbfdac46b7","savedPayload":{"position":{"x":40908.4467348531,"y":29361.909611846833},"targetPosition":{"x":41022.02894666333,"y":29779.575586990853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Independent Data","name":"New Session Independent Data","id":"bf04ccea-266d-4115-b50e-fefdf29b873a"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.singleMarketData === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Single Market Data.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Independent Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Independent Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.singleMarketData)\n setup(templateClone, target, exchange, 'Exchange Data Products', 'singleMarketData')\n templateClone.payload.referenceParent = market\n\n return templateClone\n }\n}","id":"255fc8f9-413a-4334-b6f5-d944d57fb27c","savedPayload":{"position":{"x":41008.52902631402,"y":29349.031866776015},"targetPosition":{"x":41022.02894666333,"y":29779.575586990853},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"4dd2897c-d7e2-4fa2-a92f-4d0cf49a6370","savedPayload":{"position":{"x":41022.02894666333,"y":29779.575586990853},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Back WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"169aa57f-d46b-4979-b8a2-df6ba21eabc6","savedPayload":{"position":{"x":40971.62547458223,"y":28704.67815778764},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"41351410-0495-4419-8a78-babed3a2f25c","savedPayload":{"position":{"x":40739.2805936536,"y":28612.68448755448},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"fc43d350-5a2e-4948-8279-6444a15b39ed","savedPayload":{"position":{"x":40648.47472250254,"y":28380.33960662585},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"8f8c543a-5add-460f-9767-06cc069e142b","savedPayload":{"position":{"x":40749.374350272024,"y":28158.088482315645},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"0497555c-1024-4c2c-8be4-9c8917bed11f","savedPayload":{"position":{"x":40971.62547458223,"y":28380.33960662585},"targetPosition":{"x":41034.51136563778,"y":28696.544935681453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"5d4fb545-1392-4651-8f54-32b3b0b2278f","savedPayload":{"position":{"x":41035.68589463498,"y":28694.595676926525},"targetPosition":{"x":41161.48169175592,"y":29327.013855736088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"726cd3f8-cfce-4e06-8e13-f4b2523e6e57","savedPayload":{"position":{"x":41152.290432985494,"y":29329.738099280792},"targetPosition":{"x":41244.508007600874,"y":29750.214722992354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"d5bc03d5-baeb-4ab0-91a6-cc61d0122474","savedPayload":{"position":{"x":41240.37150963595,"y":29318.241450177095},"targetPosition":{"x":41244.508007600874,"y":29750.214722992354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Backtesting Session'\n return templateClone\n }\n}","id":"5201c9bb-45d3-4066-970d-56d13eb6905e","savedPayload":{"position":{"x":41340.5785652276,"y":29330.31360182141},"targetPosition":{"x":41244.508007600874,"y":29750.214722992354},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"caa968ef-9a38-4fb4-998f-cb7e27a3eedd","savedPayload":{"position":{"x":41244.508007600874,"y":29750.214722992354},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Paper WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"fe43a58c-8d97-4f98-ba33-6328c1bcb7a7","savedPayload":{"position":{"x":41557.474267378886,"y":28704.538380895512},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"447096dc-d9b3-472d-985e-7810458651d2","savedPayload":{"position":{"x":41328.36437304013,"y":28614.669001956987},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87f61b2b-cd47-42db-b8a8-2d2b84c30712","savedPayload":{"position":{"x":41238.701960314706,"y":28385.55910761823},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"fe0ed876-65d6-488c-8572-86708cd2f4b8","savedPayload":{"position":{"x":41328.657032916315,"y":28156.74187315566},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"4844333d-4238-412b-b2f3-403d78d1aaa8","savedPayload":{"position":{"x":41557.474267378886,"y":28385.55910761823},"targetPosition":{"x":41536.37709492533,"y":28707.266395142844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"9bf71a35-9ee8-4679-89c7-e9894c3963cd","savedPayload":{"position":{"x":41538.15110500089,"y":28705.54204056541},"targetPosition":{"x":41495.97864513366,"y":29348.96944058102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"f7b51fbd-c90d-4b5a-9242-9de2a40f4733","savedPayload":{"position":{"x":41486.39783131572,"y":29349.39838333926},"targetPosition":{"x":41466.63967856194,"y":29779.44540401966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"b7adb316-4430-4933-80ef-c8e239a947fc","savedPayload":{"position":{"x":41574.43678643975,"y":29361.148251719344},"targetPosition":{"x":41466.63967856194,"y":29779.44540401966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Paper Trading Session'\n return templateClone\n }\n}","id":"09fd8aa3-006f-4c13-8084-78da7f7ed4ca","savedPayload":{"position":{"x":41668.11920683221,"y":29398.712908628426},"targetPosition":{"x":41466.63967856194,"y":29779.44540401966},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"ce8531c2-42df-4c54-b4ea-48d7ca9861e5","savedPayload":{"position":{"x":41466.63967856194,"y":29779.44540401966},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Live WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"22bcc102-5751-444e-a609-bf050743c987","savedPayload":{"position":{"x":42124.2954678251,"y":28863.166820214137},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"a97553e6-85bd-4f7d-b7a3-6235e540e1a8","savedPayload":{"position":{"x":41899.82203310804,"y":28765.34236295704},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"6adfe7ca-0353-4506-a1ac-09bd6b6a7c86","savedPayload":{"position":{"x":41803.41381185934,"y":28540.86892823998},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"9136e76e-e3e4-48c6-a6bd-e1a64176c7a3","savedPayload":{"position":{"x":41897.44019113757,"y":28314.01365155245},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"f267f52b-25be-4822-90b7-88bf3121d009","savedPayload":{"position":{"x":42124.2954678251,"y":28540.86892823998},"targetPosition":{"x":42020.66210112073,"y":28846.1629818523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"a095996a-c30e-45e8-8598-7b6010b2095b","savedPayload":{"position":{"x":42020.66210112073,"y":28846.1629818523},"targetPosition":{"x":41813.395367712,"y":29456.751089076944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"9df1f12f-0030-4c41-98e2-d07482ff8d22","savedPayload":{"position":{"x":41804.22824867941,"y":29454.97269393116},"targetPosition":{"x":41673.8119490607,"y":29865.233131825215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"b5554d40-5014-45ec-b996-e74e05c5e872","savedPayload":{"position":{"x":41886.24622750515,"y":29489.107062327046},"targetPosition":{"x":41673.8119490607,"y":29865.233131825215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Live Trading Session'\n return templateClone\n }\n}","id":"ade4b7d5-1066-43fa-b6af-e2d1213c4d14","savedPayload":{"position":{"x":41967.05573074429,"y":29549.690370515207},"targetPosition":{"x":41673.8119490607,"y":29865.233131825215},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"3e9a2343-49bb-43d5-adda-0072b01313f1","savedPayload":{"position":{"x":41673.8119490607,"y":29865.233131825215},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Forward WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"b03fa95d-fb4d-4cef-9590-70bcf0034123","savedPayload":{"position":{"x":42492.63963403888,"y":28500.7397102676},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"352b1a8a-1d74-44ff-b9f3-411f337db931","savedPayload":{"position":{"x":42710.36396962775,"y":28492.07047492605},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c7ed2f21-cd86-44fe-a946-1dc00e5f8fb3","savedPayload":{"position":{"x":42891.7169300037,"y":28613.377753949273},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"13d4f731-4ee0-4a24-810a-f4760432e33e","savedPayload":{"position":{"x":42967.139262708275,"y":28818.147267745622},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"a70a92df-4abe-421d-92b2-ef70a756441c","savedPayload":{"position":{"x":42636.198275976094,"y":28799.555013396635},"targetPosition":{"x":42436.14135357761,"y":29099.04809298164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"3a96fe18-f607-4a4e-9921-31b507475885","savedPayload":{"position":{"x":42438.1614413147,"y":29100.30420086799},"targetPosition":{"x":42080.37565816827,"y":29635.83788162232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"f6114149-90fb-45a7-a42a-6ab052a9980a","savedPayload":{"position":{"x":42083.877506284356,"y":29639.214152165696},"targetPosition":{"x":41851.70073721987,"y":30001.718699579407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"315b67c6-84cf-4370-a4fd-a8209c2532c9","savedPayload":{"position":{"x":42154.2858199032,"y":29693.416156016287},"targetPosition":{"x":41851.70073721987,"y":30001.718699579407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Forward Testing Session'\n return templateClone\n }\n}","id":"8635fe81-b9b5-4a95-a6d0-950584c2787c","savedPayload":{"position":{"x":42216.68710212813,"y":29772.906297846872},"targetPosition":{"x":41851.70073721987,"y":30001.718699579407},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"3bb7924d-49b4-4748-83f5-5067dd8f3ef5","savedPayload":{"position":{"x":41851.70073721987,"y":30001.718699579407},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Testing Environment Task Manager","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Paper & Backtesting Sessions","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Paper Trading Session","name":"Paper WHB","code":"{\n\"folderName\": \"Paper-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"","code":"{ \n\"name\": \"BTC\",\n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.0001,\n\"maximumBalance\": 100\n}","id":"7d2a4605-5be7-4b12-9761-0087ce656080","savedPayload":{"position":{"x":58839.14388415234,"y":24927.028842622058},"targetPosition":{"x":59128.30306023794,"y":24784.417420210317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"timeRange":{"type":"Time Range","name":"Time Range","code":"{\n\"finalDatetime\": \"2020-12-31T23:59:59.999Z\"\n}","id":"e645ba22-2ba3-4c87-9d62-748477e055dc","savedPayload":{"position":{"x":58859.51581791883,"y":24605.696200546055},"targetPosition":{"x":59127.604308799004,"y":24784.793954568726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"9b0e2fa1-fb9e-4854-9657-7157843a0a56","savedPayload":{"position":{"x":59148.67116983788,"y":24463.100561334704},"targetPosition":{"x":59127.604308799004,"y":24784.793954568726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"072fc7e2-ca96-4c0a-963c-d8697f26a12c","savedPayload":{"position":{"x":59416.74029182331,"y":24642.218622131157},"targetPosition":{"x":59127.604308799004,"y":24784.793954568726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"28139c87-d8fb-49e6-92ce-f826f0ef32d3","savedPayload":{"position":{"x":59396.37218222337,"y":24963.53548100677},"targetPosition":{"x":59128.30976209059,"y":24784.401361252618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"0e80ef27-72f6-42e9-98bd-2266ad8d0902","savedPayload":{"position":{"x":59804.95296700782,"y":25367.11597430327},"targetPosition":{"x":59521.10161858211,"y":25530.99762672669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"43096f38-2d07-4536-a8de-c1d6dc52e5af","savedPayload":{"position":{"x":59521.10161858211,"y":25530.99762672669},"targetPosition":{"x":59237.25027015641,"y":25694.87927915011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","id":"c169326d-c842-452b-a9b7-e8658e31dcd4","savedPayload":{"position":{"x":59521.10161858211,"y":25858.76093157353},"targetPosition":{"x":59237.25027015641,"y":25694.87927915011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"67daf900-abb9-4d94-b86b-85ec5820c311","savedPayload":{"position":{"x":59237.25027015641,"y":25694.87927915011},"targetPosition":{"x":58909.48696530957,"y":25694.87927915011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"e1d9b766-0b00-478d-a179-b4d030811a17","savedPayload":{"position":{"x":58909.48696530957,"y":25694.87927915011},"targetPosition":{"x":58730.36890451312,"y":25962.94840113555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"10914881-2af7-4326-9a48-eb50a5b83b21","savedPayload":{"position":{"x":43148.68597156199,"y":28929.306607589107},"targetPosition":{"x":42790.73037953115,"y":29465.505673634056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Backtesting Session","name":"Back WHB","code":"{\n\"folderName\": \"Back-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.5,\n\"maximumBalance\": 2\n}","id":"58289171-cb5f-482c-b5f6-445eb6dd33bf","savedPayload":{"position":{"x":42537.327550963964,"y":31160.961548220756},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n}","id":"59fd49b3-e491-4029-9dae-12cf0a0e48e5","savedPayload":{"position":{"x":42634.582186457636,"y":31403.38448004863},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"Time Range","code":"{\n\"initialDatetime\": \"2019-01-01T00:00:00.000Z\",\n\"finalDatetime\": \"2020-12-31T23:59:59.999Z\"\n}","id":"7bd10192-7a52-4995-98aa-e16129827ca8","savedPayload":{"position":{"x":42505.51606105929,"y":31630.859690067537},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"59764b94-aa9f-462a-be17-5b110e18609a","savedPayload":{"position":{"x":42247.418315102834,"y":31671.77669257772},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"f72c1a53-9e2e-49d5-a07d-90d7ab53c6cf","savedPayload":{"position":{"x":42054.31085665342,"y":31495.36938133895},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"3f249546-8932-42c0-a779-b4142cb03d17","savedPayload":{"position":{"x":42071.81283321917,"y":31234.86146616106},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"2c70a07e-67d1-4157-8524-448842327782","savedPayload":{"position":{"x":42333.95256349406,"y":31383.068202737708},"targetPosition":{"x":42286.9609164959,"y":31085.672789832544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"58ad6731-33c6-4a8f-8bfd-fbd40d7aa8d0","savedPayload":{"position":{"x":42286.9609164959,"y":31085.672789832544},"targetPosition":{"x":42239.98120428201,"y":30788.712419923588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"3a49b8dd-94b8-4b8f-9c0d-a140ba4526a8","savedPayload":{"position":{"x":42005.790428390974,"y":30977.842413715054},"targetPosition":{"x":42239.98120428201,"y":30788.712419923588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"649950c4-79f9-4d35-ba72-a96d67fb9278","savedPayload":{"position":{"x":42239.98120428201,"y":30788.712419923588},"targetPosition":{"x":42347.80484714503,"y":30508.02004481642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"ef610792-0e38-40b6-8d28-41b6b8d76cb7","savedPayload":{"position":{"x":42347.80484714503,"y":30508.02004481642},"targetPosition":{"x":42497.411883386725,"y":30118.27345043192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"13ceeef0-8a9f-4da9-a4ce-43bc32323c47","savedPayload":{"position":{"x":43369.09482323325,"y":29180.640229388548},"targetPosition":{"x":42790.73037953115,"y":29465.505673634056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"e4b004e5-d078-435b-896e-bcbec6684a4c","savedPayload":{"position":{"x":42788.33055050651,"y":29460.33006650938},"targetPosition":{"x":42303.65777895588,"y":29885.320401558594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"d1632ba7-4823-4174-9caf-8979360c7399","savedPayload":{"position":{"x":42306.30084653272,"y":29889.56009504403},"targetPosition":{"x":41988.19245558151,"y":30179.598263962605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"cce4bcd5-fa0e-4dda-82a7-28cbf76432a4","savedPayload":{"position":{"x":42360.29961090922,"y":29960.146787012927},"targetPosition":{"x":41988.19245558151,"y":30179.598263962605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Testing Environment","name":"New Testing Environment","id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Testing Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Testing Environment.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n if (process.session !== undefined) {\n if (process.session.parameters !== undefined) {\n if (process.session.parameters.baseAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.baseAsset, superAction.payload.parentNode.baseAsset)\n }\n if (process.session.parameters.quotedAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.quotedAsset, superAction.payload.parentNode.quotedAsset)\n }\n\n function findExchangeAccountAsset(taskAsset, marketAsset) {\n for (let k = 0; k < superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts.length; k++) {\n let userAccount = superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts[k]\n let found = false\n if (userAccount.userAssets !== undefined) {\n for (let m = 0; m < userAccount.userAssets.assets.length; m++) {\n let asset = userAccount.userAssets.assets[m]\n if (asset.payload.referenceParent !== undefined) {\n if (asset.payload.referenceParent.id === marketAsset.payload.referenceParent.id) {\n taskAsset.payload.referenceParent = asset\n found = true\n break\n }\n }\n }\n }\n if (found === true) { break }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"49b39b49-1d4c-405c-a9f8-955e0ecc9a71","savedPayload":{"position":{"x":42400.00958453763,"y":30053.137447105302},"targetPosition":{"x":41988.19245558151,"y":30179.598263962605},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"414cdf9f-dc5b-4c23-ac5c-0e7a098b2143","savedPayload":{"position":{"x":41988.19245558151,"y":30179.598263962605},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Production Environment Task Manager","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Fwd & Live Sessions","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Forward Testing Session","name":"Fwd WHB","code":"{\n\"folderName\": \"Fwd-WHB\",\n\"balancePercentage\": 10\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"","code":"{ \n\"name\": \"BTC\",\n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.0001,\n\"maximumBalance\": 100\n}","id":"13814644-70d4-48bb-ab83-6eca9afa1505","savedPayload":{"position":{"x":43898.202865446845,"y":28513.22471302298},"targetPosition":{"x":44214.412208175614,"y":28450.340293742338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"Time Range","code":"{\n\"finalDatetime\": \"2020-12-31T23:59:59.999Z\"\n}","id":"2c4e0754-9b53-4520-97cd-6f2f4e6f1be5","savedPayload":{"position":{"x":44001.83437443194,"y":28207.91650398044},"targetPosition":{"x":44214.411954851625,"y":28450.32681446251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"5ca81018-5c1f-4f4f-ac76-3ca8a353f8d7","savedPayload":{"position":{"x":44318.04346383672,"y":28145.01860541997},"targetPosition":{"x":44214.411954851625,"y":28450.32681446251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"7752fa57-fc50-44c4-9039-bf8adb59b594","savedPayload":{"position":{"x":44530.61918653714,"y":28387.41476047182},"targetPosition":{"x":44214.411954851625,"y":28450.32681446251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"5a1a81c6-37bd-4cdc-9cf7-2a4610ede63f","savedPayload":{"position":{"x":44426.983909553244,"y":28692.76081770574},"targetPosition":{"x":44214.40369503324,"y":28450.37467441457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"6e43df5f-8866-400e-89a2-aa421be07a46","savedPayload":{"position":{"x":44639.21311529333,"y":28953.492993173568},"targetPosition":{"x":44362.680050511335,"y":29113.149432565286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"47651cad-aee5-405e-9d40-b4787c49d09e","savedPayload":{"position":{"x":44362.680050511335,"y":29113.149432565286},"targetPosition":{"x":44086.14698572934,"y":29272.805871957004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","keyInstance":{"type":"Key Instance","name":"","id":"5677d06d-c674-476d-a9a9-fc231616f478","savedPayload":{"position":{"x":44641.648440807316,"y":28934.43435213565},"targetPosition":{"x":44325.439351402536,"y":28997.33225069612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"id":"ac49275e-4fe1-480f-be02-37665547a777","savedPayload":{"position":{"x":44362.680050511335,"y":29432.46231134872},"targetPosition":{"x":44086.14698572934,"y":29272.805871957004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"57deee32-22b7-4eec-8c9a-9b971d1aeb1a","savedPayload":{"position":{"x":44086.14698572934,"y":29272.805871957004},"targetPosition":{"x":43766.834106945906,"y":29272.805871957004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8910dee0-b699-4a35-85ee-a2b3bbdac18e","savedPayload":{"position":{"x":43766.834106945906,"y":29272.805871957004},"targetPosition":{"x":43524.437951894055,"y":29485.381594657418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"70fd8717-56d5-4ad8-b6ed-3050decedf19","savedPayload":{"position":{"x":43524.437951894055,"y":29485.381594657418},"targetPosition":{"x":43039.645641790354,"y":29910.53304005825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Live Trading Session","name":"Live Trading WHB","code":"{\n\"folderName\": \"Live-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"","code":"{\n\"initialBalance\": 0.001,\n\"minimumBalance\": 0.0001,\n\"maximumBalance\": 0.1\n}","id":"20934090-980d-42d7-8f5a-ed8a42d18023","savedPayload":{"position":{"x":44483.98025590086,"y":29130.156633711173},"targetPosition":{"x":44789.27430951318,"y":29233.790000415538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"quotedAsset":{"type":"Quoted Asset","name":"","code":"{\n\"initialBalance\": 0,\n\"minimumBalance\": 0,\n\"maximumBalance\": 100\n}","id":"17f9ceac-c3a9-4a05-8bc3-3ccf91ad4c72","savedPayload":{"position":{"x":44726.37641095271,"y":28917.580911010755},"targetPosition":{"x":44789.27430951318,"y":29233.790000415538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"76a1028a-e120-4b8b-a8ba-e7ed1daf08d3","savedPayload":{"position":{"x":45029.855069359604,"y":29021.84182313976},"targetPosition":{"x":44787.45485699156,"y":29234.404354776158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"2433390c-f57d-4719-907c-91ca54666f49","savedPayload":{"position":{"x":45092.752967920074,"y":29338.05091254454},"targetPosition":{"x":44787.45485699156,"y":29234.404354776158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"71a1b270-9cf6-41b4-8962-98f2a3da2bc7","savedPayload":{"position":{"x":44850.356812868224,"y":29550.626635244957},"targetPosition":{"x":44787.45485699156,"y":29234.404354776158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"52e15fb1-6977-4c1f-b244-b4f40c01b6f3","savedPayload":{"position":{"x":44873.05461000759,"y":29397.986765372196},"targetPosition":{"x":44592.590049508464,"y":29559.913054874516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e70a2d0f-329a-410e-b3ed-fbf1968cac32","savedPayload":{"position":{"x":44592.590049508464,"y":29559.913054874516},"targetPosition":{"x":44312.12548900934,"y":29721.839344376836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","keyInstance":{"type":"Key Instance","name":"","id":"3fa5a1c3-ec84-4335-b318-7ed4c6e412a9","savedPayload":{"position":{"x":44915.07010663412,"y":29866.208179225097},"targetPosition":{"x":44609.7760530218,"y":29762.574812520732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"Key 1","id":"d2893836-c3d5-449f-a132-971542ef0c0d"}}},"id":"a6c24af9-77fd-4179-bb83-22928acce259","savedPayload":{"position":{"x":44592.590049508464,"y":29883.765633879157},"targetPosition":{"x":44312.12548900934,"y":29721.839344376836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"6053e090-2c8e-4c1b-8eb4-eb3032f5cb9d","savedPayload":{"position":{"x":44312.12548900934,"y":29721.839344376836},"targetPosition":{"x":43988.2729100047,"y":29721.839344376836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"67b86977-56e8-4cb9-aa4f-0ae1b8d6d9f3","savedPayload":{"position":{"x":43988.2729100047,"y":29721.839344376836},"targetPosition":{"x":43672.06382059992,"y":29784.737242937306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"8b8401d2-fbd3-4514-9a24-6236941f8572","savedPayload":{"position":{"x":43672.06382059992,"y":29784.737242937306},"targetPosition":{"x":43039.645641790354,"y":29910.53304005825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"122a1f16-06c2-4e63-9c9b-0b1b6532ef6e","savedPayload":{"position":{"x":43033.03153991556,"y":29899.2389124779},"targetPosition":{"x":42454.82977041021,"y":30184.238535816123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},"id":"7154ffab-e458-47a9-98ab-716d7db899c2","savedPayload":{"position":{"x":42456.34376614294,"y":30188.953721262016},"targetPosition":{"x":42073.98737786909,"y":30386.75204236016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"efbaa91d-f097-4fda-b373-8b9394dae215","savedPayload":{"position":{"x":42490.24760746739,"y":30271.125180700914},"targetPosition":{"x":42073.98737786909,"y":30386.75204236016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Production Environment","name":"New Production Environment","id":"32656457-f603-416a-b805-546642094dc4"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Production Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Production Environment.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n if (process.session !== undefined) {\n if (process.session.parameters !== undefined) {\n if (process.session.parameters.baseAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.baseAsset, superAction.payload.parentNode.baseAsset)\n }\n if (process.session.parameters.quotedAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.quotedAsset, superAction.payload.parentNode.quotedAsset)\n }\n\n function findExchangeAccountAsset(taskAsset, marketAsset) {\n for (let k = 0; k < superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts.length; k++) {\n let userAccount = superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts[k]\n let found = false\n if (userAccount.userAssets !== undefined) {\n for (let m = 0; m < userAccount.userAssets.assets.length; m++) {\n let asset = userAccount.userAssets.assets[m]\n if (asset.payload.referenceParent !== undefined) {\n if (asset.payload.referenceParent.id === marketAsset.payload.referenceParent.id) {\n taskAsset.payload.referenceParent = asset\n found = true\n break\n }\n }\n }\n }\n if (found === true) { break }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"7504b088-dc0b-4a67-b673-150524eb3430","savedPayload":{"position":{"x":42504.52804734828,"y":30371.28237434611},"targetPosition":{"x":42073.98737786909,"y":30386.75204236016},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"aaef47a3-030f-4bba-a297-72973f84a6a7","savedPayload":{"position":{"x":42073.98737786909,"y":30386.75204236016},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Masters Data Mining Tasks","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Masters","tasks":[{"type":"Task","name":"OHKCVs","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","code":" {\n \"repo\": \"Exchange-Raw-Data-Sensor-Bot\",\n \"startDate\": \"2015-01-01\"\n }","processes":[{"type":"Sensor Process Instance","name":"Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fa969ad9-f967-4c42-9a7b-e3ca5c53a2a4","savedPayload":{"position":{"x":43671.00027239754,"y":28856.943091676305},"targetPosition":{"x":43567.498296733465,"y":29162.3636676408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"7321618d-f188-4909-ae51-bff16e83e85c","savedPayload":{"position":{"x":43567.498296733465,"y":29162.3636676408},"targetPosition":{"x":43464.06722420924,"y":29467.842167671126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"66324e06-a787-4389-ba0a-f6158224532e","savedPayload":{"position":{"x":43464.06722420924,"y":29467.842167671126},"targetPosition":{"x":43360.691361026584,"y":29773.54537737439},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"02b2b5ef-8fbb-4234-847b-9e9381e39e40","savedPayload":{"position":{"x":43360.691361026584,"y":29773.54537737439},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles & Volumes","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","code":" {\n \"repo\": \"Candles-Volumes-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"65a2cdb9-af06-458b-ae81-52a922d32874","savedPayload":{"position":{"x":44239.36337395328,"y":29209.697635104123},"targetPosition":{"x":44060.2198905935,"y":29477.959510651268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"fe3e9758-12d8-46da-a7e9-968a340f0ae5","savedPayload":{"position":{"x":44060.2198905935,"y":29477.959510651268},"targetPosition":{"x":43881.1373749603,"y":29746.194646546814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5ba98b0e-e71d-4c91-a3b2-ca98f7bf3e1b","savedPayload":{"position":{"x":44748.497652339385,"y":29318.442706041416},"targetPosition":{"x":44314.89113382611,"y":29532.287195826062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"e3fe5518-65d4-4413-9d1f-624025766f97","savedPayload":{"position":{"x":44314.89113382611,"y":29532.287195826062},"targetPosition":{"x":43881.1373749603,"y":29746.194646546814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"80415df6-6aca-42d5-b91d-6d5d6326f72f","savedPayload":{"position":{"x":43881.1373749603,"y":29746.194646546814},"targetPosition":{"x":43638.5937543753,"y":29959.064822103785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"a2a8253d-ea54-431a-a623-627a9d80c96d","savedPayload":{"position":{"x":43638.5937543753,"y":29959.064822103785},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candle & Volume Stairs Patters","bot":{"type":"Indicator Bot Instance","name":"Stairs Patterns","code":" {\n \"repo\": \"Stairs-Patterns-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9b578904-5f8d-4011-ac4e-a0ad42f78a3d","savedPayload":{"position":{"x":44681.5668151454,"y":29910.493454022107},"targetPosition":{"x":44392.18828953674,"y":30053.0939332087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"2430f966-d667-43de-ad9e-1a0a748fc252","savedPayload":{"position":{"x":44392.18828953674,"y":30053.0939332087},"targetPosition":{"x":44102.8905640764,"y":30195.677451532058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"80c87e44-7b3a-449d-9bf4-d14502bfa837"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ab1d35fe-8782-42de-8017-2fc10bc5342c","savedPayload":{"position":{"x":45068.0607289357,"y":30258.627798760706},"targetPosition":{"x":44585.557101487946,"y":30227.1784612219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"0d5c61fd-1073-4f08-b951-65a1d040e0f2","savedPayload":{"position":{"x":44585.557101487946,"y":30227.1784612219},"targetPosition":{"x":44102.8905640764,"y":30195.677451532058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2924712f-7d80-4f36-8822-71a12cb485f6"}}}],"id":"9be6d863-a4df-4b43-ba48-96f5a8b252a9","savedPayload":{"position":{"x":44102.8905640764,"y":30195.677451532058},"targetPosition":{"x":43786.33364239331,"y":30258.56207231393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"1efe1e8c-fec4-406e-8b8a-51feabd90934","savedPayload":{"position":{"x":43786.33364239331,"y":30258.56207231393},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Bollinger Bands & Percentage Bandwidth","bot":{"type":"Indicator Bot Instance","name":"Bollinger Bands","code":" {\n \"repo\": \"Bollinger-Bands-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"936109e1-9d5f-4738-9eee-26e98c6675a9","savedPayload":{"position":{"x":44713.87406914462,"y":30737.306304570255},"targetPosition":{"x":44391.91978758277,"y":30716.26641552209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"69c2cfe4-3a79-45d0-8742-ff3f368431f6","savedPayload":{"position":{"x":44391.91978758277,"y":30716.26641552209},"targetPosition":{"x":44070.057249921745,"y":30695.231631186056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"75d8a16d-5ff3-4771-b32a-bf5ea071e7fc","savedPayload":{"position":{"x":44874.2365621043,"y":31232.47693669704},"targetPosition":{"x":44472.19774741333,"y":30963.92831312466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c437054a-3447-486b-ab42-b267b800f96a","savedPayload":{"position":{"x":44472.19774741333,"y":30963.92831312466},"targetPosition":{"x":44070.057249921745,"y":30695.231631186056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"9604d5b6-af02-4ac3-91aa-fa82dcd316bf","savedPayload":{"position":{"x":44070.057249921745,"y":30695.231631186056},"targetPosition":{"x":43764.46278318986,"y":30591.515062036906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"ed9d924d-7a8b-46da-a4e9-eb121329fe49","savedPayload":{"position":{"x":43764.46278318986,"y":30591.515062036906},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Bollinger Channels & Sub-Channels","bot":{"type":"Indicator Bot Instance","name":"Bollinger Channels","code":" {\n \"repo\": \"Bollinger-Channels-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6e4bd29a-ffe6-4bbd-a114-62a0efe82a12","savedPayload":{"position":{"x":44327.45578539955,"y":31470.472421210285},"targetPosition":{"x":44059.29115231958,"y":31291.213234147825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"b3c5ca8e-cc9d-4662-96cb-82d7c5801f67","savedPayload":{"position":{"x":44059.29115231958,"y":31291.213234147825},"targetPosition":{"x":43791.2422938607,"y":31111.98146528281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d6995a0d-dffd-4213-b159-1919fa35f1b8","savedPayload":{"position":{"x":44218.71377608719,"y":31979.437936210907},"targetPosition":{"x":44004.95543909178,"y":31545.819012576827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"d640b042-3b50-4f02-961a-9f4e9aab1015","savedPayload":{"position":{"x":44004.95543909178,"y":31545.819012576827},"targetPosition":{"x":43791.2422938607,"y":31111.98146528281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"88c5bffa-e658-4a99-89b3-b3b03d40d2e6","savedPayload":{"position":{"x":43791.2422938607,"y":31111.98146528281},"targetPosition":{"x":43578.70277309983,"y":30869.247361706733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"10972cbd-be85-4344-bf34-8aab4dc3a23b","savedPayload":{"position":{"x":43578.70277309983,"y":30869.247361706733},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"8e0023df-5beb-4187-a53b-908c363861f9","savedPayload":{"position":{"x":43156.4841390823,"y":30390.62206967252},"targetPosition":{"x":42524.09981665908,"y":30516.583554818837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},"id":"930ad389-2e02-405d-a608-628df967e702","savedPayload":{"position":{"x":42523.7600305568,"y":30516.71427538839},"targetPosition":{"x":42103.228997696315,"y":30608.85822184399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"216101a4-697c-41c6-989c-a5f8f181c624","savedPayload":{"position":{"x":42535.257672093634,"y":30604.840807968307},"targetPosition":{"x":42103.228997696315,"y":30608.85822184399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"7449a608-32ca-4285-94d1-c96791e2817f"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Data Mining') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"c1cbecc9-8340-4435-a0ab-140334ba104d","savedPayload":{"position":{"x":42523.10684276926,"y":30705.178667212942},"targetPosition":{"x":42103.228997696315,"y":30608.85822184399},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"ddd80520-a052-464b-a7b8-23b72387086f","savedPayload":{"position":{"x":42103.228997696315,"y":30608.85822184399},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Sparta Data Mining Tasks","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Sparta","tasks":[{"type":"Task","name":"SMA","bot":{"type":"Indicator Bot Instance","name":"SMA","code":" {\n\"repo\": \"SMA-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"592304dd-b412-4f42-9f24-1c2b6305538a","savedPayload":{"position":{"x":44081.07402893388,"y":29261.998897990103},"targetPosition":{"x":44026.645778640726,"y":29579.221989214726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"4829d508-b32b-402c-8d27-4493549196b5","savedPayload":{"position":{"x":44026.645778640726,"y":29579.221989214726},"targetPosition":{"x":43972.4065421682,"y":29897.10630245453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4de8af37-754b-4178-9960-49f8dd9fea12","savedPayload":{"position":{"x":45181.23630246372,"y":29451.731721515236},"targetPosition":{"x":44576.21686964499,"y":29674.70505877392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"5f34959e-a63c-4298-8323-a16f75e23431","savedPayload":{"position":{"x":44576.21686964499,"y":29674.70505877392},"targetPosition":{"x":43972.4065421682,"y":29897.10630245453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"6db29c31-152b-472a-852e-0e4a36bec524","savedPayload":{"position":{"x":43972.4065421682,"y":29897.10630245453},"targetPosition":{"x":43560.447957279874,"y":30392.592888800373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"20c34f88-6b58-474b-b69d-02712765c0db","savedPayload":{"position":{"x":43560.447957279874,"y":30392.592888800373},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"EMA","bot":{"type":"Indicator Bot Instance","name":"EMA","code":" {\n\"repo\": \"EMA-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"64c7ca91-01ce-4dab-8b29-7cfa8e1f19a4","savedPayload":{"position":{"x":44859.514899843285,"y":30121.011006320903},"targetPosition":{"x":44627.96868788552,"y":30345.756950636583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"31761ef4-c98b-4657-a37f-652eff5340ea","savedPayload":{"position":{"x":44627.96868788552,"y":30345.756950636583},"targetPosition":{"x":44397.60154159941,"y":30571.180521093203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7610e87b-a8c3-475c-a44f-665e26614ad8","savedPayload":{"position":{"x":45637.77871650676,"y":30919.988025030405},"targetPosition":{"x":45018.119270098556,"y":30745.59259193282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c4d61b48-9c23-47f1-937b-1729767a26f6","savedPayload":{"position":{"x":45018.119270098556,"y":30745.59259193282},"targetPosition":{"x":44397.60154159941,"y":30571.180521093203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"34656b7b-826e-4ebd-943a-407d8c91ea24","savedPayload":{"position":{"x":44397.60154159941,"y":30571.180521093203},"targetPosition":{"x":43773.61593885067,"y":30730.18991821047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"28be18c7-c387-435e-ae7d-dfeca201bce5","savedPayload":{"position":{"x":43773.61593885067,"y":30730.18991821047},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"MACD","bot":{"type":"Indicator Bot Instance","name":"MACD","code":" {\n\"repo\": \"MACD-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4f7ed8bc-c0b7-4930-80c3-67c7d5378066","savedPayload":{"position":{"x":44983.300829306914,"y":31272.18736888164},"targetPosition":{"x":44664.6903058424,"y":31318.66331105525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"9cc4175f-28ad-4307-a8d6-0df303a02be1","savedPayload":{"position":{"x":44664.6903058424,"y":31318.66331105525},"targetPosition":{"x":44345.07414697165,"y":31365.355280493008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3c7ff3c1-be17-4c7d-ba0a-1cc66a41970b","savedPayload":{"position":{"x":45142.05800779668,"y":32376.79732070541},"targetPosition":{"x":44743.53125300685,"y":31871.431438437223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"a585a9e1-e18d-40b6-b364-75f01e840a4b","savedPayload":{"position":{"x":44743.53125300685,"y":31871.431438437223},"targetPosition":{"x":44345.07414697165,"y":31365.355280493008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"525c3ef8-145e-4919-bf2d-983db99a5cdb","savedPayload":{"position":{"x":44345.07414697165,"y":31365.355280493008},"targetPosition":{"x":43746.71464374547,"y":31126.66272590179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"b652ba10-fb7a-4a93-bd24-9500bb7d25ec","savedPayload":{"position":{"x":43746.71464374547,"y":31126.66272590179},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"RSI","bot":{"type":"Indicator Bot Instance","name":"RSI","code":" {\n\"repo\": \"RSI-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"002570f4-0254-46d4-ba77-c23598fd8e51","savedPayload":{"position":{"x":44404.99566369404,"y":32278.87547216769},"targetPosition":{"x":44119.73316461256,"y":32128.360134722952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"16a0815f-b793-4ca8-aa09-78f9f447f110","savedPayload":{"position":{"x":44119.73316461256,"y":32128.360134722952},"targetPosition":{"x":43835.079063319456,"y":31978.452555154123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"a1c6a73c-d518-478c-b1bb-cb1b0b4f08db","savedPayload":{"position":{"x":43886.22543093295,"y":33266.94789117124},"targetPosition":{"x":43860.82494306721,"y":32622.647306884006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"123f248b-aa95-4d1c-a6c2-9fc70fc2b816","savedPayload":{"position":{"x":43860.82494306721,"y":32622.647306884006},"targetPosition":{"x":43835.079063319456,"y":31978.452555154123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"007d0fe3-9637-4a4f-8078-730af1716e1b","savedPayload":{"position":{"x":43835.079063319456,"y":31978.452555154123},"targetPosition":{"x":43491.8595100809,"y":31433.159671292047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"da1cddfc-5d56-46e7-b14a-0b21127cf6e3","savedPayload":{"position":{"x":43491.8595100809,"y":31433.159671292047},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"6907a34a-7247-4717-8be3-154ebc2cacfc","savedPayload":{"position":{"x":43148.11347120946,"y":30888.090667089848},"targetPosition":{"x":42504.88095204648,"y":30846.032220824836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},"id":"ac392204-2e14-4744-a636-063c2bf461ae","savedPayload":{"position":{"x":42503.92882004517,"y":30851.060186450413},"targetPosition":{"x":42073.92521442706,"y":30831.198922171756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"4d93f230-422c-4a10-8e6d-50381aa60aba","savedPayload":{"position":{"x":42492.15602972974,"y":30939.14569786162},"targetPosition":{"x":42073.92521442706,"y":30831.198922171756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"7449a608-32ca-4285-94d1-c96791e2817f"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Data Mining') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"b2fdaf25-bbd2-476a-93ed-faf23b3bfa00","savedPayload":{"position":{"x":42454.46995341186,"y":31033.006966781162},"targetPosition":{"x":42073.92521442706,"y":30831.198922171756},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"83556c43-8483-48e3-be7e-36f9dbb70f08","savedPayload":{"position":{"x":42073.92521442706,"y":30831.198922171756},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Time Machine","templateStructure":{"type":"Template Structure","name":"New Template Structure","timeMachines":{"type":"Time Machine","name":"My Time Machine","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2018-12-30T23:22:24.048Z\",\n \"toDate\": \"2019-01-10T19:44:56.900Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"acf304c4-443a-4a57-880e-13d330e754c4","savedPayload":{"position":{"x":43403.71385960902,"y":31070.25743774981},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3540,\n \"maxValue\": 4069.8,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"153feb9a-76e1-4838-ae3e-33cacd7ca646","savedPayload":{"position":{"x":43498.210312701696,"y":31159.13703163811},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"7890a24e-5bf5-450f-bb35-f23b3eb495f6","savedPayload":{"position":{"x":43563.72708595913,"y":31270.64519496795},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 2,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"38e64db1-376d-45de-a92c-a6fb25282507","savedPayload":{"position":{"x":44109.83415963966,"y":30937.86521235062},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"884a5d08-b607-4b2b-8e7a-8adeb7e8dd4a"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9ad6d912-ff9c-45c8-bfce-bcd0d86e3977","savedPayload":{"position":{"x":44205.6098160294,"y":30959.823517408513},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"68df01d8-d9a8-400c-aa76-8da44c5dc040"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6c5e7c7f-a010-4d59-8299-d8d4534aa7f8","savedPayload":{"position":{"x":44293.08407507179,"y":31002.672018369994},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"632f0f98-eb2c-4820-9943-662a4903be81"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"41db7192-ec70-4f95-85dd-343bfa05258e","savedPayload":{"position":{"x":44368.348611497284,"y":31063.845937901744},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"88a1ca81-b317-4ab2-b651-c8fa566e8e28"}}},{"type":"Layer","name":"Candle-Stairs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"13c5c367-3758-4f8f-883c-ba6f1ee3bef2","savedPayload":{"position":{"x":44427.90815708521,"y":31140.140566409682},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candle-Stairs","id":"5979844b-35e7-4c04-938f-18e6156352a0"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0fac6cd3-3172-4854-9ce2-f2827023f503","savedPayload":{"position":{"x":44468.925526457206,"y":31227.704458882996},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"5bce195f-7d08-4281-bb9d-ca1e9417068e"}}},{"type":"Layer","name":"Base7 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"88c7874f-9372-4dc5-9bb1-491ca58ceded","savedPayload":{"position":{"x":44489.41919141794,"y":31322.158131655397},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"b9145946-1899-4fac-b531-47ed600873be"}}},{"type":"Layer","name":"Base11 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6570c568-8d96-427f-9dbe-822d0fe9f900","savedPayload":{"position":{"x":44488.32436810392,"y":31418.775117724905},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c9daf265-f452-4372-a8a9-6ed9c0d7a0ed"}}},{"type":"Layer","name":"Popular EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a133263e-3eca-4d4a-b04e-8f40e5ec78ba","savedPayload":{"position":{"x":44465.73931006295,"y":31512.698451768847},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"fba1f18e-dd5b-48e6-82b1-ff04a624f090"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"32fcaa2a-af1d-4aa6-adf0-36dd24759ca4","savedPayload":{"position":{"x":44422.8561844238,"y":31599.25111918654},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"64f059bf-66e2-463c-aed1-800b5fa195ab"}}},{"type":"Layer","name":"Base11 EMAs","code":"{\n \"status\": \"off\"\n}","id":"3d5d19b9-481d-4542-b279-06303aa9edef","savedPayload":{"position":{"x":44361.815504829836,"y":31674.11383736746},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"5b6e48e5-259f-44f3-b40e-a29982204c95"}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"04f846d4-f203-4eed-807d-214655d4551b","savedPayload":{"position":{"x":44285.67018420087,"y":31733.55538390932},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"10e19911-11b2-4b8d-86fa-b7a5de9f93e4","savedPayload":{"position":{"x":44192.00661868389,"y":31775.826453588827},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"5bfa0541-b9bb-4dc6-a5a0-5684278c2a16","savedPayload":{"position":{"x":44063.81715385048,"y":31364.457430060815},"targetPosition":{"x":43633.04641698698,"y":31408.048729542832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"63c36d69-c222-4687-a535-c147abcfb9a9","savedPayload":{"position":{"x":43594.725972131535,"y":31396.15645295786},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3496.3969296811883,\n \"maxValue\": 12400.41819345618,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"6f07d76a-363a-4200-a7f4-ee9daf700744","savedPayload":{"position":{"x":151482.359164207,"y":49808.48296925023},"targetPosition":{"x":151654.86388295254,"y":49696.45709503446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"Volumes","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a6350c1f-64b3-4b13-921b-aea1eb09b6c1","savedPayload":{"position":{"x":152873.86441598856,"y":49780.359169456024},"targetPosition":{"x":151449.45747713832,"y":49707.221988613695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"4ec71a01-3d83-4e8e-9780-bcb700dcf66a"}}},{"type":"Layer","name":"Volume-Stairs","code":"{\n \"status\": \"off\"\n}","id":"3b5badc4-8160-4c8f-ae19-8db7970e581d","savedPayload":{"position":{"x":152825.84669051523,"y":49880.72288779618},"targetPosition":{"x":151449.45747713832,"y":49707.221988613695},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"929661b5-acce-457c-a8cc-505a64cfacf2","savedPayload":{"position":{"x":151449.45747713832,"y":49707.221988613695},"targetPosition":{"x":151654.86388295254,"y":49696.45709503446},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"6f781018-392b-4ba2-b00f-68d4c5498f2b","savedPayload":{"position":{"x":43589.483743371355,"y":31525.233568656182},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"d4098b73-7e25-434e-8fd9-342393cbb400"}}},{"type":"Timeline Chart","name":"Oscilators","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": -27,\n \"minValue\": 211.77170422115967,\n \"maxValue\": 1022.3595879377227,\n \"autoMinScale\": false,\n \"autoMaxScale\": true\n}","id":"5074db98-f742-4771-a68e-a001b9c45182","savedPayload":{"position":{"x":152639.64913789183,"y":49808.47409819635},"targetPosition":{"x":152429.35698121728,"y":49764.036607727256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"Percentage Bandwidth","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"830c5295-25ca-4f08-bc7c-262be9e2fb17","savedPayload":{"position":{"x":152780.88194222748,"y":50005.01761657379},"targetPosition":{"x":152589.25658587948,"y":49907.66668169117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"9b5b1b81-c68c-45a5-8123-1a114a24b744"}}},{"type":"Layer","name":"RSI14","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8aa6fde7-89cb-43af-bea1-149a0b94c29c","savedPayload":{"position":{"x":152706.53354504477,"y":50087.78774255567},"targetPosition":{"x":152589.25658587948,"y":49907.66668169117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"71351f63-10b4-4f89-ac9f-a8380bb0b75e"}}}],"id":"2f754398-30ac-4afa-8c12-c37013b8a4da","savedPayload":{"position":{"x":152589.25658587948,"y":49907.66668169117},"targetPosition":{"x":152429.35698121728,"y":49764.036607727256},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"805c6659-38e2-4959-86d0-cbabc87a8184","savedPayload":{"position":{"x":43547.99601771927,"y":31647.670654951988},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"b672763b-52c9-47c0-8b03-8156a564a6bb","savedPayload":{"position":{"x":152721.7165241614,"y":50071.82766858393},"targetPosition":{"x":152515.41503408196,"y":50011.518656744745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"247187f3-1aaf-4de1-a7db-c3a550cdbad0"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"e330fc5d-223f-4d13-8251-84be95894b04","savedPayload":{"position":{"x":152692.98290097114,"y":50132.626601845135},"targetPosition":{"x":152515.41503408196,"y":50011.518656744745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"4deb0411-a8ea-465e-adcd-e0515f291a2d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"63396270-7226-4fe7-8a77-072a29e73691","savedPayload":{"position":{"x":152646.8676977817,"y":50181.570645631255},"targetPosition":{"x":152515.41503408196,"y":50011.518656744745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"cec4bf02-ebee-48ad-a0cc-25629e34fd65"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"d08e1626-0cdc-42b6-ab7e-ed35fc9f0f43","savedPayload":{"position":{"x":152587.88499198476,"y":50213.86881592328},"targetPosition":{"x":152515.41503408196,"y":50011.518656744745},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c9cbb548-60ef-491d-b083-5825573db463"}}}],"id":"c9302ae8-6f99-41c2-86d7-04e6b1cf1817","savedPayload":{"position":{"x":152515.41503408196,"y":50011.518656744745},"targetPosition":{"x":152358.9787788951,"y":49864.1240171505},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"02c55b2b-cb65-4131-aa82-de04ce1ca1c6","savedPayload":{"position":{"x":43473.34381125114,"y":31753.414233944444},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Forward Testing","layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"37d4edc7-51fc-4c9b-93b9-4f0f0e795208","savedPayload":{"position":{"x":152552.780943571,"y":50241.81457893446},"targetPosition":{"x":152371.82712549967,"y":50125.82665954886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"456e8c88-ba2b-487d-aa2a-48f6c1144d22"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"0f0b5b97-3962-4eaf-861e-edd447bc4d61","savedPayload":{"position":{"x":152508.08219509257,"y":50292.05553107315},"targetPosition":{"x":152371.82712549967,"y":50125.82665954886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"6abfb364-1883-488b-ac98-ffa234013e95"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"fcb15fbd-c988-4b80-add2-88c0d20d2f90","savedPayload":{"position":{"x":152450.04585105745,"y":50326.02484308238},"targetPosition":{"x":152371.82712549967,"y":50125.82665954886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"cdba5840-e1d7-4909-9422-423299403f3c"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"ec034ac9-5e70-44aa-99c7-d0afd8d0f78c","savedPayload":{"position":{"x":152384.35291318287,"y":50340.39736202459},"targetPosition":{"x":152371.82712549967,"y":50125.82665954886},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"0dbb4a2c-c32d-4bd1-a410-09ce23613604"}}}],"id":"2bc6080e-b3b8-4240-946b-b1475b407bdc","savedPayload":{"position":{"x":152371.82712549967,"y":50125.82665954886},"targetPosition":{"x":152263.25350650685,"y":49940.32935235324},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"de6ca021-6112-41ab-8a4e-5b24682c397e","savedPayload":{"position":{"x":43372.43292600157,"y":31833.81321393812},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Paper Trading","layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"89f07041-b4af-47e8-9282-06f889d1873f","savedPayload":{"position":{"x":152342.79759411846,"y":50357.32117196102},"targetPosition":{"x":152201.85125022143,"y":50195.050996450904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"442bd8c3-1825-4415-84bd-e2f1148b3f92"}}},{"type":"Layer","name":"Conditions","code":"{\"status\":\"off\"}","id":"3ca3b1c6-2f56-4a69-a5b1-c6461b339286","savedPayload":{"position":{"x":152285.7549471198,"y":50392.93391982934},"targetPosition":{"x":152201.85125022143,"y":50195.050996450904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8ab46f29-e225-42ee-a17e-297b2ebcfdbe"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"8306fbd3-4c33-4796-8a00-259702921276","savedPayload":{"position":{"x":152220.49922167737,"y":50409.17650842599},"targetPosition":{"x":152201.85125022143,"y":50195.050996450904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"2f5a9ed9-80b6-412f-9d24-47f49653be9b"}}},{"type":"Layer","name":"Strategies","code":"{\"status\":\"off\"}","id":"bb634599-045c-4475-a4ed-af6798660d58","savedPayload":{"position":{"x":152153.41810286074,"y":50404.45900001033},"targetPosition":{"x":152201.85125022143,"y":50195.050996450904},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"ddb30433-09f1-44b5-afdc-28a05f218c25"}}}],"id":"0a45ce5c-57f1-442b-b5cf-a86812267f3c","savedPayload":{"position":{"x":152201.85125022143,"y":50195.050996450904},"targetPosition":{"x":152149.93625632144,"y":49986.47891028794},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"d5405af5-9184-4017-805d-a7f9f9256524","savedPayload":{"position":{"x":43252.59217685917,"y":31882.768850380995},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"37fba5b0-3028-4687-bb7b-1162995b2fe2","savedPayload":{"position":{"x":152075.1440739003,"y":50208.582402996944},"targetPosition":{"x":152028.20731802512,"y":49998.833928232714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"Simulation","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"068284a9-fd5b-4b68-9103-836637fdcb0b","savedPayload":{"position":{"x":151999.8765472874,"y":50415.867315492134},"targetPosition":{"x":151963.98150360212,"y":50203.94981372117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"e7f2581f-1dfd-44eb-82d9-a9be799307e6"}}},{"type":"Layer","name":"Conditions","code":"{\n \"status\": \"off\"\n}","id":"4cfdb7dd-af3d-444d-abb8-f04d77e73889","savedPayload":{"position":{"x":151932.63360934897,"y":50416.58751321001},"targetPosition":{"x":151963.98150360212,"y":50203.94981372117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"24dfc84b-74ec-4d79-9e97-4eb17dd2ac1d"}}},{"type":"Layer","name":"Trades","code":"{\n \"status\": \"off\"\n}","id":"1ea11e8c-049c-4ff1-ae9a-0f27d4165127","savedPayload":{"position":{"x":151868.4592217137,"y":50396.493251367945},"targetPosition":{"x":151963.98150360212,"y":50203.94981372117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"ce87f885-a79b-4675-9cfd-337daed079e5"}}},{"type":"Layer","name":"Strategies","code":"{\n \"status\": \"off\"\n}","id":"996074fc-0efb-4bf8-8f16-95cbad2f5043","savedPayload":{"position":{"x":151813.63522057253,"y":50357.551496320004},"targetPosition":{"x":151963.98150360212,"y":50203.94981372117},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"40c22092-c1c9-4a45-893a-b7372833df84"}}}],"id":"c49c4542-bc88-44c2-b537-6f2d5b3b3a3a","savedPayload":{"position":{"x":151963.98150360212,"y":50203.94981372117},"targetPosition":{"x":152028.20731802512,"y":49998.833928232714},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"cfda3689-ce58-460a-81c3-4b99377e7184","savedPayload":{"position":{"x":43123.353016406516,"y":31895.48066891583},"targetPosition":{"x":43143.11608097549,"y":31441.945579703464},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"a4a8b171-8b07-4895-8c25-cedd8fa9c957","savedPayload":{"position":{"x":43207.542314166436,"y":31452.44134638652},"targetPosition":{"x":42800.67950231031,"y":31314.367600709233},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":-1305,"y":-15},"width":240,"height":112.375,"radius":0}}},"id":"e6469c64-26cb-4a30-951d-a68147cf1ba5","savedPayload":{"position":{"x":42799.983555154366,"y":31314.141124217673},"targetPosition":{"x":41987.99498348557,"y":31038.50157901751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":3},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"c01a6962-8b0e-4b06-8705-8751660aabbf","savedPayload":{"position":{"x":42364.7694631699,"y":31246.472508277413},"targetPosition":{"x":41987.99498348557,"y":31038.50157901751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Dashboard","name":"Super Action Generated","id":"64fa2a31-21ea-4b56-a625-dc4082876a89"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.timeMachines === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Time Machine.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Dashboard') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Dashboard.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.timeMachines)\n target.timeMachines.push(templateClone)\n setup(templateClone, target)\n\n return templateClone\n }\n}","id":"968fd18b-2a1b-41ca-9317-23f301607857","savedPayload":{"position":{"x":42305.866413249794,"y":31328.719125408603},"targetPosition":{"x":41987.99498348557,"y":31038.50157901751},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"41c01e94-6c5c-4b71-9c70-8d962c86fec0","savedPayload":{"position":{"x":41987.99498348557,"y":31038.50157901751},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/*\nMaster Script\n*/\nfunction newNewMasterScriptInstance() {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction, masterScript) {\n /* Validations */\n if (superAction.payload.parentNode.type !== 'Market') {\n superAction.payload.uiObject.setErrorMessage('Super Action Parent Node needs to be of type Market.')\n return\n }\n if (superAction.payload.parentNode.baseAsset === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Node needs to have a child Market Base Asset.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Node needs to have a child Market Quoted Asset.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Base Asset Node needs to reference an Asset.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Quoted Asset Node needs to reference an Asset.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Asset Node needs to be a child of Exchange Assets.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset.payload.referenceParent.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Asset Node needs to be a child of Exchange Assets.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Assets needs to be a child of an Exchange Node.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset.payload.referenceParent.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Assets needs to be a child of an Exchange Node.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode.payload.parentNode.id !== superAction.payload.parentNode.quotedAsset.payload.referenceParent.payload.parentNode.payload.parentNode.id) {\n superAction.payload.uiObject.setErrorMessage('Assets must be from the same Exchange.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market needs to be a child of Exchange Markets.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Markets needs to be a child of an Exchange.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.id !== superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode.payload.parentNode.id) {\n superAction.payload.uiObject.setErrorMessage('Assets and Market must be defined at the same Exchange.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange needs have a child Exchange Accounts.')\n return\n }\n\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n if (templateScript.javascriptCode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Javascript Code.')\n return\n }\n if (templateScript.templateStructure === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Template Structure.')\n return\n }\n if (templateScript.templateTarget === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Template Target.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent.')\n return\n }\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n executionResult = templateScriptInstance.runValidations(superAction)\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n return true\n }\n\n function runScript(superAction, masterScript) {\n let market = superAction.payload.parentNode\n let exchange = superAction.payload.parentNode.payload.parentNode.payload.parentNode\n let singleMarketData\n let backSessionReference\n let paperSessionReference\n let liveSessionReference\n let ForwardSessionReference\n let dataMiningTaskManagers = []\n let testingEnvironmentTaskManager\n let productionEnvironmentTaskManager\n let timeMachine\n\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateClone\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n templateClone = templateScriptInstance.runScript(superAction, templateScript)\n }\n\n if (executionResult !== true) { return false }\n\n switch (templateClone.payload.parentNode.payload.parentNode.type) {\n case 'Session Independent Data': {\n singleMarketData = templateClone\n break\n }\n case 'Session Based Data': {\n switch (templateClone.templateType) {\n case 'Backtesting Session': {\n backSessionReference = templateClone\n break\n }\n case 'Paper Trading Session': {\n paperSessionReference = templateClone\n break\n }\n case 'Live Trading Session': {\n liveSessionReference = templateClone\n break\n }\n case 'Forward Testing Session': {\n ForwardSessionReference = templateClone\n break\n }\n }\n break\n }\n case 'Data Mining': {\n dataMiningTaskManagers.push(templateClone)\n break\n }\n case 'Testing Environment': {\n testingEnvironmentTaskManager = templateClone\n break\n }\n case 'Production Environment': {\n productionEnvironmentTaskManager = templateClone\n break\n }\n case 'Charting Space': {\n timeMachine = templateClone\n break\n }\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n /* Here we will find the sessions within the tasks in order to put them as a reference of the Session Reference nodes we already have */\n let session\n session = findSession('Backtesting Session', testingEnvironmentTaskManager)\n backSessionReference.payload.referenceParent = session\n session = findSession('Paper Trading Session', testingEnvironmentTaskManager)\n paperSessionReference.payload.referenceParent = session\n session = findSession('Live Trading Session', productionEnvironmentTaskManager)\n liveSessionReference.payload.referenceParent = session\n session = findSession('Forward Testing Session', productionEnvironmentTaskManager)\n ForwardSessionReference.payload.referenceParent = session\n\n function findSession(sessionType, taskManager) {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.session !== undefined) {\n if (process.session.type === sessionType) {\n return process.session\n }\n }\n }\n }\n }\n }\n }\n\n /* Here, we are going to connect the layers of the charts at the Time Machine */\n for (let i = 0; i < timeMachine.timelineCharts.length; i++) {\n let timelineChart = timeMachine.timelineCharts[i]\n switch (timelineChart.name) {\n case 'Indicators': {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(singleMarketData, 'Candles')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Bands')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 2: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 3: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Sub-Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 4: {\n let dataProduct = findDataProduct(singleMarketData, 'Candle-Stairs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 5: {\n let dataProduct = findDataProduct(singleMarketData, 'Popular SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 6: {\n let dataProduct = findDataProduct(singleMarketData, 'Base5 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 7: {\n let dataProduct = findDataProduct(singleMarketData, 'Base6 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 8: {\n let dataProduct = findDataProduct(singleMarketData, 'Base7 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 9: {\n let dataProduct = findDataProduct(singleMarketData, 'Base11 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 10: {\n let dataProduct = findDataProduct(singleMarketData, 'Popular EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 11: {\n let dataProduct = findDataProduct(singleMarketData, 'Base7 EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 12: {\n let dataProduct = findDataProduct(singleMarketData, 'Base11 EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n break\n }\n case 'Volumes': {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(singleMarketData, 'Volumes')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'Volume-Stairs')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n break\n }\n case 'Oscilators': {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(singleMarketData, 'Percentage Bandwidth')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'RSI14')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n break\n }\n case 'Backtesting': {\n setupSessionReference(timelineChart, backSessionReference)\n break\n }\n case 'Paper Trading': {\n setupSessionReference(timelineChart, paperSessionReference)\n break\n }\n case 'Live Trading': {\n setupSessionReference(timelineChart, liveSessionReference)\n break\n }\n case 'Forward Testing': {\n setupSessionReference(timelineChart, ForwardSessionReference)\n break\n }\n }\n }\n\n function findDataProduct(singleMarketData, name) {\n for (let i = 0; i < singleMarketData.dataProducts.length; i++) {\n let dataProduct = singleMarketData.dataProducts[i]\n if (dataProduct.name === name) {\n return dataProduct\n }\n }\n }\n function setupSessionReference(timelineChart, sessionReference) {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Simulation')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Conditions')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 2: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Trades')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 3: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Strategies')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n }\n\n let exchangeAndMarket = superAction.payload.parentNode.payload.parentNode.payload.parentNode.name + ' ' + market.name\n timeMachine.name = exchangeAndMarket\n\n for (let i = 0; i < dataMiningTaskManagers.length; i++) {\n let dataMiningTaskManager = dataMiningTaskManagers[i]\n dataMiningTaskManager.name = dataMiningTaskManager.name + ' ' + market.name\n }\n\n testingEnvironmentTaskManager.name = testingEnvironmentTaskManager.name + ' ' + market.name\n productionEnvironmentTaskManager.name = productionEnvironmentTaskManager.name + ' ' + market.name\n return true\n }\n}\n/*\nEnd Manster Script\n*/","id":"d234c201-4b50-48c6-be9d-f3b141c8cc16","savedPayload":{"position":{"x":41548.06955084182,"y":30912.62231316935},"targetPosition":{"x":41244.5731805722,"y":30608.840108669116},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{}}},"id":"95b24e48-3b10-47cb-b149-8667571f4a83","savedPayload":{"position":{"x":41244.82596131754,"y":30608.713366655797},"targetPosition":{"x":40500.785430914875,"y":31038.241941751345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":"o"}}},{"type":"Master Script","name":"Delete Market Dependencies ","templateScripts":[{"type":"Template Script","name":"Delete Testing Environment Task Managers","templateTarget":{"type":"Template Target","name":"New Template Target","id":"a97aa286-3199-4362-900a-65b604bf5b9a","savedPayload":{"position":{"x":41733.74764069586,"y":31048.56951888977},"targetPosition":{"x":41584.844872187714,"y":31205.477496729574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Testing Environment","name":"New Testing Environment","id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Testing Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeTasks.length; e++) {\n let exchangeTasks = target.exchangeTasks[e]\n if (exchangeTasks.payload.referenceParent !== undefined) {\n if (exchangeTasks.payload.referenceParent.id === exchange.id) {\n for (let k = 0; k < exchangeTasks.taskManagers.length; k++) {\n let taskManager = exchangeTasks.taskManagers[k]\n checkReferenceToMarket()\n function checkReferenceToMarket() {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n if (process.marketReference.payload !== undefined) {\n if (process.marketReference.payload.referenceParent !== undefined) {\n if (process.marketReference.payload.referenceParent.id === market.id) {\n nodesToDelete.push(taskManager)\n return\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (exchangeTasks.taskManagers.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeTasks)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"9d020e32-68e5-4123-b0ad-cb443d778905","savedPayload":{"position":{"x":41786.690812351786,"y":31127.451603161848},"targetPosition":{"x":41584.844872187714,"y":31205.477496729574},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"12eb790b-7f24-48bf-a4f0-34159f3d1863","savedPayload":{"position":{"x":41584.844872187714,"y":31205.477496729574},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Production Environment Task Managers","templateTarget":{"type":"Template Target","name":"New Template Target","id":"2ef5ba0f-10f7-4af0-81c1-2e89b9aea583","savedPayload":{"position":{"x":41857.14486333724,"y":31268.385209101416},"targetPosition":{"x":41659.33073522124,"y":31356.175522174155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Production Environment","name":"New Production Environment","id":"32656457-f603-416a-b805-546642094dc4"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Production Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeTasks.length; e++) {\n let exchangeTasks = target.exchangeTasks[e]\n if (exchangeTasks.payload.referenceParent !== undefined) {\n if (exchangeTasks.payload.referenceParent.id === exchange.id) {\n for (let k = 0; k < exchangeTasks.taskManagers.length; k++) {\n let taskManager = exchangeTasks.taskManagers[k]\n checkReferenceToMarket()\n function checkReferenceToMarket() {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n if (process.marketReference.payload !== undefined) {\n if (process.marketReference.payload.referenceParent !== undefined) {\n if (process.marketReference.payload.referenceParent.id === market.id) {\n nodesToDelete.push(taskManager)\n return\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (exchangeTasks.taskManagers.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeTasks)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"9f9515a8-2e47-4a6f-acc3-6e4e01a610b2","savedPayload":{"position":{"x":41875.83418023396,"y":31361.530700988485},"targetPosition":{"x":41659.33073522124,"y":31356.175522174155},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"29b330a4-d4f6-45ac-8b41-090740dc418f","savedPayload":{"position":{"x":41659.33073522124,"y":31356.175522174155},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Data Mining Task Managers","templateTarget":{"type":"Template Target","name":"New Template Target","id":"c3417c9a-68b3-4d49-9514-0d2d30cea254","savedPayload":{"position":{"x":41886.80546274287,"y":31517.9842228287},"targetPosition":{"x":41670.37892255565,"y":31523.445973803402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"7449a608-32ca-4285-94d1-c96791e2817f"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Data Mining') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeTasks.length; e++) {\n let exchangeTasks = target.exchangeTasks[e]\n if (exchangeTasks.payload.referenceParent !== undefined) {\n if (exchangeTasks.payload.referenceParent.id === exchange.id) {\n for (let k = 0; k < exchangeTasks.taskManagers.length; k++) {\n let taskManager = exchangeTasks.taskManagers[k]\n checkReferenceToMarket()\n function checkReferenceToMarket() {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n if (process.marketReference.payload !== undefined) {\n if (process.marketReference.payload.referenceParent !== undefined) {\n if (process.marketReference.payload.referenceParent.id === market.id) {\n nodesToDelete.push(taskManager)\n return\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (exchangeTasks.taskManagers.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeTasks)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"2d8e00e3-836a-426d-9f78-db3262bd7454","savedPayload":{"position":{"x":41868.39155545606,"y":31611.182558959707},"targetPosition":{"x":41670.37892255565,"y":31523.445973803402},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"e8e96f57-041e-4c0d-a2bf-5a8e444636b1","savedPayload":{"position":{"x":41670.37892255565,"y":31523.445973803402},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Dashboard Time Machines","templateTarget":{"type":"Template Target","name":"New Template Target","id":"1cbc9a0e-d00e-4506-9a33-5fbcb3ed8900","savedPayload":{"position":{"x":41818.410188185124,"y":31760.20751513395},"targetPosition":{"x":41616.42649783022,"y":31682.390968934295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Dashboard","name":"Super Action Generated","id":"64fa2a31-21ea-4b56-a625-dc4082876a89"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Dashboard') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Dashboard.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let k = 0; k < target.timeMachines.length; k++) {\n let timeMachine = target.timeMachines[k]\n for (let i = 0; i < timeMachine.timelineCharts.length; i++) {\n let timelineChart = timeMachine.timelineCharts[i]\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n if (layer.payload.referenceParent !== undefined) {\n if (layer.payload.referenceParent.payload !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode.payload !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode.payload.referenceParent !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode.payload.referenceParent.id === market.id) {\n\n nodesToDelete.push(timeMachine)\n\n }\n }\n }\n }\n }\n }\n }\n }\n }\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"cf8f6b69-70f8-4035-801d-276c1e2d6b5d","savedPayload":{"position":{"x":41765.72446108792,"y":31839.2611862205},"targetPosition":{"x":41616.42649783022,"y":31682.390968934295},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"c78e76fc-311b-4ac7-942f-af9629ea8b76","savedPayload":{"position":{"x":41616.42649783022,"y":31682.390968934295},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Single Market Data","templateTarget":{"type":"Template Target","name":"New Template Target","id":"2d36e591-3314-4a0c-b04d-6372e961959d","savedPayload":{"position":{"x":41662.39970145276,"y":31957.823492834767},"targetPosition":{"x":41505.69047535707,"y":31808.570501389975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Independent Data","name":"New Session Independent Data","id":"bf04ccea-266d-4115-b50e-fefdf29b873a"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Independent Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Independent Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeDataProducts.length; e++) {\n let exchangeDataProducts = target.exchangeDataProducts[e]\n if (exchangeDataProducts.payload.referenceParent !== undefined) {\n if (exchangeDataProducts.payload.referenceParent.id === exchange.id) {\n for (let i = 0; i < exchangeDataProducts.singleMarketData.length; i++) {\n let singleMarketData = exchangeDataProducts.singleMarketData[i]\n if (singleMarketData.payload !== undefined) {\n if (singleMarketData.payload.referenceParent !== undefined) {\n if (singleMarketData.payload.referenceParent.id === market.id) {\n nodesToDelete.push(singleMarketData)\n }\n }\n }\n }\n if (exchangeDataProducts.singleMarketData.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeDataProducts)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"168466d3-1446-4b45-a647-ad962d1d5f2c","savedPayload":{"position":{"x":41583.45144175295,"y":32010.665568336983},"targetPosition":{"x":41505.69047535707,"y":31808.570501389975},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"f23edd8e-b0f9-4531-9550-69cdb0616bcc","savedPayload":{"position":{"x":41505.69047535707,"y":31808.570501389975},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Session References","templateTarget":{"type":"Template Target","name":"New Template Target","id":"4fe33613-3b67-4e0f-a4b4-6caa4e6dd163","savedPayload":{"position":{"x":41442.473398728536,"y":32080.637486607382},"targetPosition":{"x":41354.94697618024,"y":31882.778957647108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeSessions.length; e++) {\n let exchangeSessions = target.exchangeSessions[e]\n if (exchangeSessions.payload.referenceParent !== undefined) {\n if (exchangeSessions.payload.referenceParent.id === exchange.id) {\n for (let i = 0; i < exchangeSessions.sessionReferences.length; i++) {\n let sessionReference = exchangeSessions.sessionReferences[i]\n let singleMarketData = sessionReference.singleMarketData\n if (singleMarketData !== undefined) {\n if (singleMarketData.payload !== undefined) {\n if (singleMarketData.payload.referenceParent !== undefined) {\n if (singleMarketData.payload.referenceParent.id === market.id) {\n nodesToDelete.push(sessionReference)\n }\n }\n }\n }\n }\n if (exchangeSessions.sessionReferences.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeSessions)\n }\n }\n }\n }\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"f2cc52fd-cea8-437f-aa7d-a4d1100bb92e","savedPayload":{"position":{"x":41349.31084837155,"y":32099.228711402764},"targetPosition":{"x":41354.94697618024,"y":31882.778957647108},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"f8ffadd5-8eda-4c4e-be1c-c49b98045b42","savedPayload":{"position":{"x":41354.94697618024,"y":31882.778957647108},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}}],"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/*\nMaster Script\n*/\nfunction newNewMasterScriptInstance() {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction, masterScript) {\n /* Validations */\n if (superAction.payload.parentNode.type !== 'Market') {\n superAction.payload.uiObject.setErrorMessage('Super Action Parent Node needs to be of type Market.')\n return\n }\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n if (superAction.payload.parentNode.type !== 'Market') {\n superAction.payload.uiObject.setErrorMessage('Super Action Parent Node needs to be of type Market.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market needs to be a child of Exchange Markets.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Markets needs to be a child of an Exchange.')\n return\n }\n if (templateScript.javascriptCode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Javascript Code.')\n return\n }\n if (templateScript.templateTarget === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Template Target.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent.')\n return\n }\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n executionResult = templateScriptInstance.runValidations(superAction)\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n return true\n }\n\n function runScript(superAction, masterScript) {\n let market = superAction.payload.parentNode\n let exchange = superAction.payload.parentNode.payload.parentNode.payload.parentNode\n\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateClone\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n templateClone = templateScriptInstance.runScript(superAction, templateScript)\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n return true\n }\n}\n/*\nEnd Manster Script\n*/","id":"a9538a7f-32dd-4068-8af6-0f8a83f6f3c7","savedPayload":{"position":{"x":41187.68612757716,"y":31893.37670982332},"targetPosition":{"x":41244.27880201844,"y":31467.520909742285},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{}}},"id":"c25d0331-8ac0-4834-aa77-743487455d45","savedPayload":{"position":{"x":41244.827082580916,"y":31467.777774968024},"targetPosition":{"x":40500.785430914875,"y":31038.241941751345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"1dd2a75d-7d97-4994-8c95-b392d933b1c1","savedPayload":{"position":{"x":40500.785430914875,"y":31038.241941751345},"targetPosition":{"x":39641.041459281856,"y":31038.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":"S"}}},"id":"17b5ea06-62d8-4a79-b0ba-f9d3b997c17f","savedPayload":{"position":{"x":39641.041459281856,"y":31038.13836154292},"targetPosition":{"x":39641.041459281856,"y":31038.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file +{"type":"Super Scripts","name":"Superalgos","code":"{ \n\"codeName\": \"Superalgos\"\n}","scriptsLibrary":{"type":"Scripts Library","name":"New Scripts Library","masterScripts":[{"type":"Master Script","name":"Setup Market","templateScripts":[{"type":"Template Script","name":"Install Single Market Data","templateStructure":{"type":"Template Structure","name":"New Template Structure","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Candles","id":"24c5f795-acf3-43c3-99ee-ddb521b082f4","savedPayload":{"position":{"x":39921.72808500414,"y":29011.239540561746},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"204ec959-0861-486a-aa2a-276dbf48f775","savedPayload":{"position":{"x":39899.18996162789,"y":28906.437038861084},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candle-Stairs","id":"90ee9733-ab7e-41a0-ac78-4a7661a27017","savedPayload":{"position":{"x":39894.34302782561,"y":28800.15900804723},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candle-Stairs","id":"642474e9-da61-4168-97dc-7f7869bebc02"}}},{"type":"Data Product","name":"Volume-Stairs","id":"9ade8e93-9071-422b-8cce-7a50d6dad739","savedPayload":{"position":{"x":39907.122112782716,"y":28694.36575210638},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volume-Stairs","id":"846e9572-c4d6-4c7e-942e-c82402c5ecea"}}},{"type":"Data Product","name":"Bollinger Bands","id":"b5ef2cf7-3d35-45ec-848c-31970b59c04e","savedPayload":{"position":{"x":39937.14551746402,"y":28592.151020182675},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"1c3881ca-24b3-4cc9-b16b-9db7aa2b4c24","savedPayload":{"position":{"x":39983.58525246108,"y":28496.28744561276},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"92eec33b-86be-4b73-899f-e9550f7b0df3","savedPayload":{"position":{"x":40045.170879966965,"y":28409.383052281606},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"4b69df71-9091-4d22-9b0d-571304297033","savedPayload":{"position":{"x":40120.220836442306,"y":28333.805138252766},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}},{"type":"Data Product","name":"Popular SMAs","id":"8a5f7e27-9ca5-4d6e-b6b9-2d6cbdda8040","savedPayload":{"position":{"x":40206.68717504581,"y":28271.61367628522},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"ccd9c3fd-3382-4fea-8798-a29b04efc09e","savedPayload":{"position":{"x":40302.21100517094,"y":28224.504372242965},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"aebc2010-a6e2-436d-8cc6-96eb0689330d","savedPayload":{"position":{"x":40404.18667346443,"y":28193.762149223578},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Popular EMAs","id":"0fd4ef59-77b4-48cc-b00e-6a529a05cb0c","savedPayload":{"position":{"x":40509.83280886432,"y":28180.226095185222},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular EMAs","id":"d5894707-b065-429b-ba6b-78c71e6529fe"}}},{"type":"Data Product","name":"Base7 EMAs","id":"802917a7-816b-4e4c-bbb6-a0eaf9eb7429","savedPayload":{"position":{"x":40615.989825939425,"y":28184.268392404625},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 EMAs","id":"b42348a4-6a26-4d46-aa2e-cbf5fa0a4984"}}},{"type":"Data Product","name":"Base11 EMAs","id":"9109bfcb-70e7-4cf8-9047-da9567668082","savedPayload":{"position":{"x":40720.308190163596,"y":28205.779550509957},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 EMAs","id":"21df4f44-96eb-453b-8652-4ce2dc03424c"}}},{"type":"Data Product","name":"MACD 122609","id":"519a89d4-75bb-4c33-a63d-d65c9defbd12","savedPayload":{"position":{"x":40819.67439937884,"y":28244.18002829642},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"MACD 122609","id":"6c0c9bf0-90af-4497-b4fb-49b5872b1119"}}},{"type":"Data Product","name":"RSI14","id":"6ae3a0ab-86cf-4e81-b415-5775dfcb1d9c","savedPayload":{"position":{"x":40911.383151904,"y":28298.43982328907},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"RSI14","id":"e24248b9-90df-4b26-b5cc-0bac80efa0c7"}}},{"type":"Data Product","name":"Base6 SMAs","id":"f4d7169e-8c26-48ae-967d-529a8ecab1f1","savedPayload":{"position":{"x":40992.961894250446,"y":28367.139474001415},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base5 SMAs","id":"bae79086-c788-4b79-a9af-952326480b34","savedPayload":{"position":{"x":41062.39609896124,"y":28448.821136237813},"targetPosition":{"x":40538.570141254444,"y":28824.318034921434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}}],"id":"3c9e658e-9350-4b43-b95c-1dc9fbb7de7b","savedPayload":{"position":{"x":40539.078074386875,"y":28820.353383591115},"targetPosition":{"x":40823.9160338709,"y":29398.01243044707},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"922126c5-3b95-4c76-90ce-c85435c49624","savedPayload":{"position":{"x":40824.29068914544,"y":29397.092718863598},"targetPosition":{"x":41022.19797747817,"y":29779.337108180876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"79c82a1e-4c4e-4622-b762-4ccbfdac46b7","savedPayload":{"position":{"x":40906.39644907746,"y":29363.251065225584},"targetPosition":{"x":41022.19797747817,"y":29779.337108180876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Independent Data","name":"New Session Independent Data","id":"bf04ccea-266d-4115-b50e-fefdf29b873a"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.singleMarketData === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Single Market Data.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Independent Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Independent Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.singleMarketData)\n setup(templateClone, target, exchange, 'Exchange Data Products', 'singleMarketData')\n templateClone.payload.referenceParent = market\n\n return templateClone\n }\n}","id":"255fc8f9-413a-4334-b6f5-d944d57fb27c","savedPayload":{"position":{"x":41006.2910484142,"y":29348.864932370776},"targetPosition":{"x":41022.19797747817,"y":29779.337108180876},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"4dd2897c-d7e2-4fa2-a92f-4d0cf49a6370","savedPayload":{"position":{"x":41022.19797747817,"y":29779.337108180876},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Back WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"169aa57f-d46b-4979-b8a2-df6ba21eabc6","savedPayload":{"position":{"x":40971.62547458223,"y":28704.67815778764},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"41351410-0495-4419-8a78-babed3a2f25c","savedPayload":{"position":{"x":40739.2805936536,"y":28612.68448755448},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"fc43d350-5a2e-4948-8279-6444a15b39ed","savedPayload":{"position":{"x":40648.47472250254,"y":28380.33960662585},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"8f8c543a-5add-460f-9767-06cc069e142b","savedPayload":{"position":{"x":40749.374350272024,"y":28158.088482315645},"targetPosition":{"x":40971.62547458223,"y":28380.33960662585},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"0497555c-1024-4c2c-8be4-9c8917bed11f","savedPayload":{"position":{"x":40971.62547458223,"y":28380.33960662585},"targetPosition":{"x":41034.51136563778,"y":28696.544935681453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"5d4fb545-1392-4651-8f54-32b3b0b2278f","savedPayload":{"position":{"x":41035.68589463498,"y":28694.595676926525},"targetPosition":{"x":41161.48169175592,"y":29327.013855736088},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"726cd3f8-cfce-4e06-8e13-f4b2523e6e57","savedPayload":{"position":{"x":41152.466887010814,"y":29329.447721320896},"targetPosition":{"x":41244.68341809013,"y":29749.985890014785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"d5bc03d5-baeb-4ab0-91a6-cc61d0122474","savedPayload":{"position":{"x":41240.559480320844,"y":29317.971975363565},"targetPosition":{"x":41244.68341809013,"y":29749.985890014785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Backtesting Session'\n return templateClone\n }\n}","id":"5201c9bb-45d3-4066-970d-56d13eb6905e","savedPayload":{"position":{"x":41340.775356606006,"y":29330.03881472138},"targetPosition":{"x":41244.68341809013,"y":29749.985890014785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"caa968ef-9a38-4fb4-998f-cb7e27a3eedd","savedPayload":{"position":{"x":41244.68341809013,"y":29749.985890014785},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Paper WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"fe43a58c-8d97-4f98-ba33-6328c1bcb7a7","savedPayload":{"position":{"x":41557.474267378886,"y":28704.538380895512},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"447096dc-d9b3-472d-985e-7810458651d2","savedPayload":{"position":{"x":41328.36437304013,"y":28614.669001956987},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"87f61b2b-cd47-42db-b8a8-2d2b84c30712","savedPayload":{"position":{"x":41238.701960314706,"y":28385.55910761823},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"fe0ed876-65d6-488c-8572-86708cd2f4b8","savedPayload":{"position":{"x":41328.657032916315,"y":28156.74187315566},"targetPosition":{"x":41557.474267378886,"y":28385.55910761823},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"4844333d-4238-412b-b2f3-403d78d1aaa8","savedPayload":{"position":{"x":41557.474267378886,"y":28385.55910761823},"targetPosition":{"x":41536.37709492533,"y":28707.266395142844},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"9bf71a35-9ee8-4679-89c7-e9894c3963cd","savedPayload":{"position":{"x":41538.15110500089,"y":28705.54204056541},"targetPosition":{"x":41495.97864513366,"y":29348.96944058102},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"f7b51fbd-c90d-4b5a-9242-9de2a40f4733","savedPayload":{"position":{"x":41486.65269690472,"y":29349.123765730295},"targetPosition":{"x":41466.87836907584,"y":29779.22566832225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"b7adb316-4430-4933-80ef-c8e239a947fc","savedPayload":{"position":{"x":41574.69953513125,"y":29360.886864042135},"targetPosition":{"x":41466.87836907584,"y":29779.22566832225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Paper Trading Session'\n return templateClone\n }\n}","id":"09fd8aa3-006f-4c13-8084-78da7f7ed4ca","savedPayload":{"position":{"x":41668.38809851039,"y":29398.45407752871},"targetPosition":{"x":41466.87836907584,"y":29779.22566832225},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"ce8531c2-42df-4c54-b4ea-48d7ca9861e5","savedPayload":{"position":{"x":41466.87836907584,"y":29779.22566832225},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Live WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"22bcc102-5751-444e-a609-bf050743c987","savedPayload":{"position":{"x":42124.2954678251,"y":28863.166820214137},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"a97553e6-85bd-4f7d-b7a3-6235e540e1a8","savedPayload":{"position":{"x":41899.82203310804,"y":28765.34236295704},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"6adfe7ca-0353-4506-a1ac-09bd6b6a7c86","savedPayload":{"position":{"x":41803.41381185934,"y":28540.86892823998},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"9136e76e-e3e4-48c6-a6bd-e1a64176c7a3","savedPayload":{"position":{"x":41897.44019113757,"y":28314.01365155245},"targetPosition":{"x":42124.2954678251,"y":28540.86892823998},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"f267f52b-25be-4822-90b7-88bf3121d009","savedPayload":{"position":{"x":42124.2954678251,"y":28540.86892823998},"targetPosition":{"x":42020.66210112073,"y":28846.1629818523},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"a095996a-c30e-45e8-8598-7b6010b2095b","savedPayload":{"position":{"x":42020.66210112073,"y":28846.1629818523},"targetPosition":{"x":41813.395367712,"y":29456.751089076944},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"9df1f12f-0030-4c41-98e2-d07482ff8d22","savedPayload":{"position":{"x":41804.52015924358,"y":29454.71449829645},"targetPosition":{"x":41674.079940651434,"y":29865.02800705029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"b5554d40-5014-45ec-b996-e74e05c5e872","savedPayload":{"position":{"x":41886.53794477152,"y":29488.86405027413},"targetPosition":{"x":41674.079940651434,"y":29865.02800705029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Live Trading Session'\n return templateClone\n }\n}","id":"ade4b7d5-1066-43fa-b6af-e2d1213c4d14","savedPayload":{"position":{"x":41967.343374926975,"y":29549.440286377958},"targetPosition":{"x":41674.079940651434,"y":29865.02800705029},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"3e9a2343-49bb-43d5-adda-0072b01313f1","savedPayload":{"position":{"x":41674.079940651434,"y":29865.02800705029},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Forward WHB Session Reference","templateStructure":{"type":"Template Structure","name":"New Template Structure","sessionReferences":{"type":"Session Reference","name":" ","singleMarketData":{"type":"Single Market Data","name":"","dataProducts":[{"type":"Data Product","name":"Simulation","id":"b03fa95d-fb4d-4cef-9590-70bcf0034123","savedPayload":{"position":{"x":42492.63963403888,"y":28500.7397102676},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Simulation","id":"a3201051-46ba-4a92-aef3-a6c787b771fd"}}},{"type":"Data Product","name":"Conditions","id":"352b1a8a-1d74-44ff-b9f3-411f337db931","savedPayload":{"position":{"x":42710.36396962775,"y":28492.07047492605},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Conditions","id":"7fb3e69f-4343-47f8-ab7b-6fcf8a805fc0"}}},{"type":"Data Product","name":"Strategies","id":"c7ed2f21-cd86-44fe-a946-1dc00e5f8fb3","savedPayload":{"position":{"x":42891.7169300037,"y":28613.377753949273},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Strategies","id":"36051f0f-5161-48a6-9d13-eb1766b5566b"}}},{"type":"Data Product","name":"Trades","id":"13d4f731-4ee0-4a24-810a-f4760432e33e","savedPayload":{"position":{"x":42967.139262708275,"y":28818.147267745622},"targetPosition":{"x":42614.716102802915,"y":28831.67823199434},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Trades","id":"a26dc922-ca08-43ef-983e-029b76f39163"}}}],"id":"a70a92df-4abe-421d-92b2-ef70a756441c","savedPayload":{"position":{"x":42636.198275976094,"y":28799.555013396635},"targetPosition":{"x":42436.14135357761,"y":29099.04809298164},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"3a96fe18-f607-4a4e-9921-31b507475885","savedPayload":{"position":{"x":42438.1614413147,"y":29100.30420086799},"targetPosition":{"x":42080.37565816827,"y":29635.83788162232},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false}}},"id":"f6114149-90fb-45a7-a42a-6ab052a9980a","savedPayload":{"position":{"x":42084.203503079494,"y":29638.9796296625},"targetPosition":{"x":41851.99555666117,"y":30001.53440004916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"315b67c6-84cf-4370-a4fd-a8209c2532c9","savedPayload":{"position":{"x":42154.60283338342,"y":29693.195460597788},"targetPosition":{"x":41851.99555666117,"y":30001.53440004916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.sessionReferences === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Session Reference.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.sessionReferences)\n \n setup(templateClone, target, exchange, 'Exchange Sessions', 'sessionReferences')\n templateClone.singleMarketData.payload.referenceParent = market\n\n templateClone.templateType = 'Forward Testing Session'\n return templateClone\n }\n}","id":"8635fe81-b9b5-4a95-a6d0-950584c2787c","savedPayload":{"position":{"x":42216.99544739538,"y":29772.66402937067},"targetPosition":{"x":41851.99555666117,"y":30001.53440004916},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"3bb7924d-49b4-4748-83f5-5067dd8f3ef5","savedPayload":{"position":{"x":41851.99555666117,"y":30001.53440004916},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Testing Environment Task Manager","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Paper & Backtesting Sessions","tasks":[{"type":"Task","name":"Paper Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Paper Trading Session","name":"Paper WHB","code":"{\n\"folderName\": \"Paper-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"","code":"{ \n\"name\": \"BTC\",\n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.0001,\n\"maximumBalance\": 100\n}","id":"7d2a4605-5be7-4b12-9761-0087ce656080","savedPayload":{"position":{"x":58839.14388415234,"y":24927.028842622058},"targetPosition":{"x":59128.30306023794,"y":24784.417420210317},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"timeRange":{"type":"Time Range","name":"Time Range","code":"{\n\"finalDatetime\": \"2020-12-31T23:59:59.999Z\"\n}","id":"e645ba22-2ba3-4c87-9d62-748477e055dc","savedPayload":{"position":{"x":58859.51581791883,"y":24605.696200546055},"targetPosition":{"x":59127.604308799004,"y":24784.793954568726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"9b0e2fa1-fb9e-4854-9657-7157843a0a56","savedPayload":{"position":{"x":59148.67116983788,"y":24463.100561334704},"targetPosition":{"x":59127.604308799004,"y":24784.793954568726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"072fc7e2-ca96-4c0a-963c-d8697f26a12c","savedPayload":{"position":{"x":59416.74029182331,"y":24642.218622131157},"targetPosition":{"x":59127.604308799004,"y":24784.793954568726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"28139c87-d8fb-49e6-92ce-f826f0ef32d3","savedPayload":{"position":{"x":59396.37218222337,"y":24963.53548100677},"targetPosition":{"x":59128.30976209059,"y":24784.401361252618},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"0e80ef27-72f6-42e9-98bd-2266ad8d0902","savedPayload":{"position":{"x":59804.95296700782,"y":25367.11597430327},"targetPosition":{"x":59521.10161858211,"y":25530.99762672669},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"43096f38-2d07-4536-a8de-c1d6dc52e5af","savedPayload":{"position":{"x":59521.10161858211,"y":25530.99762672669},"targetPosition":{"x":59237.25027015641,"y":25694.87927915011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":"h"},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","id":"c169326d-c842-452b-a9b7-e8658e31dcd4","savedPayload":{"position":{"x":59521.10161858211,"y":25858.76093157353},"targetPosition":{"x":59237.25027015641,"y":25694.87927915011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"67daf900-abb9-4d94-b86b-85ec5820c311","savedPayload":{"position":{"x":59237.25027015641,"y":25694.87927915011},"targetPosition":{"x":58909.48696530957,"y":25694.87927915011},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"e1d9b766-0b00-478d-a179-b4d030811a17","savedPayload":{"position":{"x":58909.48696530957,"y":25694.87927915011},"targetPosition":{"x":58730.36890451312,"y":25962.94840113555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"10914881-2af7-4326-9a48-eb50a5b83b21","savedPayload":{"position":{"x":43148.68597156199,"y":28929.306607589107},"targetPosition":{"x":42790.73037953115,"y":29465.505673634056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Backtesting WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Backtesting Session","name":"Back WHB","code":"{\n\"folderName\": \"Back-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"Bitcoin","code":"{\n\"initialBalance\": 1,\n\"minimumBalance\": 0.5,\n\"maximumBalance\": 2\n}","id":"58289171-cb5f-482c-b5f6-445eb6dd33bf","savedPayload":{"position":{"x":42537.327550963964,"y":31160.961548220756},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Bitcoin","id":"6ce89731-67f6-4668-afe5-00b9d5d2c94b"}}},"quotedAsset":{"type":"Quoted Asset","name":"Tether","code":"{\n}","id":"59fd49b3-e491-4029-9dae-12cf0a0e48e5","savedPayload":{"position":{"x":42634.582186457636,"y":31403.38448004863},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Asset","name":"Tether","id":"deca9af8-0d3f-4bb4-b745-8c863f15d7da"}}},"timeRange":{"type":"Time Range","name":"Time Range","code":"{\n\"initialDatetime\": \"2019-01-01T00:00:00.000Z\",\n\"finalDatetime\": \"2020-12-31T23:59:59.999Z\"\n}","id":"7bd10192-7a52-4995-98aa-e16129827ca8","savedPayload":{"position":{"x":42505.51606105929,"y":31630.859690067537},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-hs\"\n}","id":"59764b94-aa9f-462a-be17-5b110e18609a","savedPayload":{"position":{"x":42247.418315102834,"y":31671.77669257772},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"f72c1a53-9e2e-49d5-a07d-90d7ab53c6cf","savedPayload":{"position":{"x":42054.31085665342,"y":31495.36938133895},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"3f249546-8932-42c0-a779-b4142cb03d17","savedPayload":{"position":{"x":42071.81283321917,"y":31234.86146616106},"targetPosition":{"x":42333.95256349406,"y":31383.068202737708},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"2c70a07e-67d1-4157-8524-448842327782","savedPayload":{"position":{"x":42333.95256349406,"y":31383.068202737708},"targetPosition":{"x":42286.9609164959,"y":31085.672789832544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"58ad6731-33c6-4a8f-8bfd-fbd40d7aa8d0","savedPayload":{"position":{"x":42286.9609164959,"y":31085.672789832544},"targetPosition":{"x":42239.98120428201,"y":30788.712419923588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"Binance BTC/USDT","id":"3a49b8dd-94b8-4b8f-9c0d-a140ba4526a8","savedPayload":{"position":{"x":42005.790428390974,"y":30977.842413715054},"targetPosition":{"x":42239.98120428201,"y":30788.712419923588},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"5489751f-5ce4-40d0-9854-5bcfdc810269"}}},"id":"649950c4-79f9-4d35-ba72-a96d67fb9278","savedPayload":{"position":{"x":42239.98120428201,"y":30788.712419923588},"targetPosition":{"x":42347.80484714503,"y":30508.02004481642},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"ef610792-0e38-40b6-8d28-41b6b8d76cb7","savedPayload":{"position":{"x":42347.80484714503,"y":30508.02004481642},"targetPosition":{"x":42497.411883386725,"y":30118.27345043192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"13ceeef0-8a9f-4da9-a4ce-43bc32323c47","savedPayload":{"position":{"x":43369.09482323325,"y":29180.640229388548},"targetPosition":{"x":42790.73037953115,"y":29465.505673634056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"e4b004e5-d078-435b-896e-bcbec6684a4c","savedPayload":{"position":{"x":42788.33055050651,"y":29460.33006650938},"targetPosition":{"x":42303.65777895588,"y":29885.320401558594},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"d1632ba7-4823-4174-9caf-8979360c7399","savedPayload":{"position":{"x":42306.65211524025,"y":29889.35486251319},"targetPosition":{"x":41988.50759782906,"y":30179.439588653066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"cce4bcd5-fa0e-4dda-82a7-28cbf76432a4","savedPayload":{"position":{"x":42360.63321004203,"y":29959.949910855954},"targetPosition":{"x":41988.50759782906,"y":30179.439588653066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Testing Environment","name":"New Testing Environment","id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Testing Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Testing Environment.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n if (process.session !== undefined) {\n if (process.session.parameters !== undefined) {\n if (process.session.parameters.baseAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.baseAsset, superAction.payload.parentNode.baseAsset)\n }\n if (process.session.parameters.quotedAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.quotedAsset, superAction.payload.parentNode.quotedAsset)\n }\n\n function findExchangeAccountAsset(taskAsset, marketAsset) {\n for (let k = 0; k < superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts.length; k++) {\n let userAccount = superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts[k]\n let found = false\n if (userAccount.userAssets !== undefined) {\n for (let m = 0; m < userAccount.userAssets.assets.length; m++) {\n let asset = userAccount.userAssets.assets[m]\n if (asset.payload.referenceParent !== undefined) {\n if (asset.payload.referenceParent.id === marketAsset.payload.referenceParent.id) {\n taskAsset.payload.referenceParent = asset\n found = true\n break\n }\n }\n }\n }\n if (found === true) { break }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"49b39b49-1d4c-405c-a9f8-955e0ecc9a71","savedPayload":{"position":{"x":42400.33709606452,"y":30052.900534847577},"targetPosition":{"x":41988.50759782906,"y":30179.439588653066},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"414cdf9f-dc5b-4c23-ac5c-0e7a098b2143","savedPayload":{"position":{"x":41988.50759782906,"y":30179.439588653066},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Production Environment Task Manager","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Fwd & Live Sessions","tasks":[{"type":"Task","name":"Fwd Testing WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Forward Testing Session","name":"Fwd WHB","code":"{\n\"folderName\": \"Fwd-WHB\",\n\"balancePercentage\": 10\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"","code":"{ \n\"name\": \"BTC\",\n\"initialBalance\": 0.01,\n\"minimumBalance\": 0.0001,\n\"maximumBalance\": 100\n}","id":"13814644-70d4-48bb-ab83-6eca9afa1505","savedPayload":{"position":{"x":43898.202865446845,"y":28513.22471302298},"targetPosition":{"x":44214.412208175614,"y":28450.340293742338},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeRange":{"type":"Time Range","name":"Time Range","code":"{\n\"finalDatetime\": \"2020-12-31T23:59:59.999Z\"\n}","id":"2c4e0754-9b53-4520-97cd-6f2f4e6f1be5","savedPayload":{"position":{"x":44001.83437443194,"y":28207.91650398044},"targetPosition":{"x":44214.411954851625,"y":28450.32681446251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"5ca81018-5c1f-4f4f-ac76-3ca8a353f8d7","savedPayload":{"position":{"x":44318.04346383672,"y":28145.01860541997},"targetPosition":{"x":44214.411954851625,"y":28450.32681446251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"7752fa57-fc50-44c4-9039-bf8adb59b594","savedPayload":{"position":{"x":44530.61918653714,"y":28387.41476047182},"targetPosition":{"x":44214.411954851625,"y":28450.32681446251},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"5a1a81c6-37bd-4cdc-9cf7-2a4610ede63f","savedPayload":{"position":{"x":44426.983909553244,"y":28692.76081770574},"targetPosition":{"x":44214.40369503324,"y":28450.37467441457},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"6e43df5f-8866-400e-89a2-aa421be07a46","savedPayload":{"position":{"x":44639.21311529333,"y":28953.492993173568},"targetPosition":{"x":44362.680050511335,"y":29113.149432565286},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"47651cad-aee5-405e-9d40-b4787c49d09e","savedPayload":{"position":{"x":44362.680050511335,"y":29113.149432565286},"targetPosition":{"x":44086.14698572934,"y":29272.805871957004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","keyInstance":{"type":"Key Instance","name":"","id":"5677d06d-c674-476d-a9a9-fc231616f478","savedPayload":{"position":{"x":44641.648440807316,"y":28934.43435213565},"targetPosition":{"x":44325.439351402536,"y":28997.33225069612},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"id":"ac49275e-4fe1-480f-be02-37665547a777","savedPayload":{"position":{"x":44362.680050511335,"y":29432.46231134872},"targetPosition":{"x":44086.14698572934,"y":29272.805871957004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"57deee32-22b7-4eec-8c9a-9b971d1aeb1a","savedPayload":{"position":{"x":44086.14698572934,"y":29272.805871957004},"targetPosition":{"x":43766.834106945906,"y":29272.805871957004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"8910dee0-b699-4a35-85ee-a2b3bbdac18e","savedPayload":{"position":{"x":43766.834106945906,"y":29272.805871957004},"targetPosition":{"x":43524.437951894055,"y":29485.381594657418},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"70fd8717-56d5-4ad8-b6ed-3050decedf19","savedPayload":{"position":{"x":43524.437951894055,"y":29485.381594657418},"targetPosition":{"x":43039.645641790354,"y":29910.53304005825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Live Trading WHB","bot":{"type":"Trading Bot Instance","code":" {}","processes":[{"type":"Trading Process Instance","name":"Multi-Period","code":" {\n \"process\": \"Multi-Period\"\n }","session":{"type":"Live Trading Session","name":"Live Trading WHB","code":"{\n\"folderName\": \"Live-WHB\"\n}","parameters":{"type":"Parameters","name":"Parameters","baseAsset":{"type":"Base Asset","name":"","code":"{\n\"initialBalance\": 0.001,\n\"minimumBalance\": 0.0001,\n\"maximumBalance\": 0.1\n}","id":"20934090-980d-42d7-8f5a-ed8a42d18023","savedPayload":{"position":{"x":44483.98025590086,"y":29130.156633711173},"targetPosition":{"x":44789.27430951318,"y":29233.790000415538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"quotedAsset":{"type":"Quoted Asset","name":"","code":"{\n\"initialBalance\": 0,\n\"minimumBalance\": 0,\n\"maximumBalance\": 100\n}","id":"17f9ceac-c3a9-4a05-8bc3-3ccf91ad4c72","savedPayload":{"position":{"x":44726.37641095271,"y":28917.580911010755},"targetPosition":{"x":44789.27430951318,"y":29233.790000415538},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"timeFrame":{"type":"Time Frame","name":"Time Frame","code":"{\n\"value\": \"01-min\"\n}","id":"76a1028a-e120-4b8b-a8ba-e7ed1daf08d3","savedPayload":{"position":{"x":45029.855069359604,"y":29021.84182313976},"targetPosition":{"x":44787.45485699156,"y":29234.404354776158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"slippage":{"type":"Slippage","name":"Slippage","code":"{\n\"positionRate\": 0.1,\n\"stopLoss\": 0.1,\n\"takeProfit\": 0.1\n}","id":"2433390c-f57d-4719-907c-91ca54666f49","savedPayload":{"position":{"x":45092.752967920074,"y":29338.05091254454},"targetPosition":{"x":44787.45485699156,"y":29234.404354776158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"feeStructure":{"type":"Fee Structure","name":"Fee Structure","code":"{\n\"maker\": 0.15,\n\"taker\": 0.25\n}","id":"71a1b270-9cf6-41b4-8962-98f2a3da2bc7","savedPayload":{"position":{"x":44850.356812868224,"y":29550.626635244957},"targetPosition":{"x":44787.45485699156,"y":29234.404354776158},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{}}},"id":"52e15fb1-6977-4c1f-b244-b4f40c01b6f3","savedPayload":{"position":{"x":44873.05461000759,"y":29397.986765372196},"targetPosition":{"x":44592.590049508464,"y":29559.913054874516},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"e70a2d0f-329a-410e-b3ed-fbf1968cac32","savedPayload":{"position":{"x":44592.590049508464,"y":29559.913054874516},"targetPosition":{"x":44312.12548900934,"y":29721.839344376836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Trading System","name":"Weak-Hands Buster for BTC/USDT","id":"a239a374-497a-43f9-8382-5277410b1c2d"}}},"marketReference":{"type":"Market Reference","name":"","keyInstance":{"type":"Key Instance","name":"","id":"3fa5a1c3-ec84-4335-b318-7ed4c6e412a9","savedPayload":{"position":{"x":44915.07010663412,"y":29866.208179225097},"targetPosition":{"x":44609.7760530218,"y":29762.574812520732},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Exchange Account Key","name":"Key 1","id":"d2893836-c3d5-449f-a132-971542ef0c0d"}}},"id":"a6c24af9-77fd-4179-bb83-22928acce259","savedPayload":{"position":{"x":44592.590049508464,"y":29883.765633879157},"targetPosition":{"x":44312.12548900934,"y":29721.839344376836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"6053e090-2c8e-4c1b-8eb4-eb3032f5cb9d","savedPayload":{"position":{"x":44312.12548900934,"y":29721.839344376836},"targetPosition":{"x":43988.2729100047,"y":29721.839344376836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period","id":"6f95cc67-bad0-48dc-bb82-0075c43cb202"}}}],"id":"67b86977-56e8-4cb9-aa4f-0ae1b8d6d9f3","savedPayload":{"position":{"x":43988.2729100047,"y":29721.839344376836},"targetPosition":{"x":43672.06382059992,"y":29784.737242937306},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"8b8401d2-fbd3-4514-9a24-6236941f8572","savedPayload":{"position":{"x":43672.06382059992,"y":29784.737242937306},"targetPosition":{"x":43039.645641790354,"y":29910.53304005825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"122a1f16-06c2-4e63-9c9b-0b1b6532ef6e","savedPayload":{"position":{"x":43033.03153991556,"y":29899.2389124779},"targetPosition":{"x":42454.82977041021,"y":30184.238535816123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":"l"}}},"id":"7154ffab-e458-47a9-98ab-716d7db899c2","savedPayload":{"position":{"x":42456.70606043275,"y":30188.779354441016},"targetPosition":{"x":42074.31332736949,"y":30386.62137157483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"efbaa91d-f097-4fda-b373-8b9394dae215","savedPayload":{"position":{"x":42490.58387434197,"y":30270.949077047233},"targetPosition":{"x":42074.31332736949,"y":30386.62137157483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Production Environment","name":"New Production Environment","id":"32656457-f603-416a-b805-546642094dc4"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Production Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Production Environment.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n if (process.session !== undefined) {\n if (process.session.parameters !== undefined) {\n if (process.session.parameters.baseAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.baseAsset, superAction.payload.parentNode.baseAsset)\n }\n if (process.session.parameters.quotedAsset !== undefined) {\n findExchangeAccountAsset(process.session.parameters.quotedAsset, superAction.payload.parentNode.quotedAsset)\n }\n\n function findExchangeAccountAsset(taskAsset, marketAsset) {\n for (let k = 0; k < superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts.length; k++) {\n let userAccount = superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts.userAccounts[k]\n let found = false\n if (userAccount.userAssets !== undefined) {\n for (let m = 0; m < userAccount.userAssets.assets.length; m++) {\n let asset = userAccount.userAssets.assets[m]\n if (asset.payload.referenceParent !== undefined) {\n if (asset.payload.referenceParent.id === marketAsset.payload.referenceParent.id) {\n taskAsset.payload.referenceParent = asset\n found = true\n break\n }\n }\n }\n }\n if (found === true) { break }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"7504b088-dc0b-4a67-b673-150524eb3430","savedPayload":{"position":{"x":42504.87078178642,"y":30371.04569877201},"targetPosition":{"x":42074.31332736949,"y":30386.62137157483},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"aaef47a3-030f-4bba-a297-72973f84a6a7","savedPayload":{"position":{"x":42074.31332736949,"y":30386.62137157483},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Masters Data Mining Tasks","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Masters","tasks":[{"type":"Task","name":"OHKCVs","bot":{"type":"Sensor Bot Instance","name":"Exchange Raw Data","code":" {\n \"repo\": \"Exchange-Raw-Data-Sensor-Bot\",\n \"startDate\": \"2015-01-01\"\n }","processes":[{"type":"Sensor Process Instance","name":"Historic-OHLCVs","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"fa969ad9-f967-4c42-9a7b-e3ca5c53a2a4","savedPayload":{"position":{"x":43671.00027239754,"y":28856.943091676305},"targetPosition":{"x":43567.498296733465,"y":29162.3636676408},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"7321618d-f188-4909-ae51-bff16e83e85c","savedPayload":{"position":{"x":43567.498296733465,"y":29162.3636676408},"targetPosition":{"x":43464.06722420924,"y":29467.842167671126},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Historic-OHLCVs","id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc"}}}],"id":"66324e06-a787-4389-ba0a-f6158224532e","savedPayload":{"position":{"x":43464.06722420924,"y":29467.842167671126},"targetPosition":{"x":43360.691361026584,"y":29773.54537737439},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"02b2b5ef-8fbb-4234-847b-9e9381e39e40","savedPayload":{"position":{"x":43360.691361026584,"y":29773.54537737439},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candles & Volumes","bot":{"type":"Indicator Bot Instance","name":"Candles Volumes","code":" {\n \"repo\": \"Candles-Volumes-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"65a2cdb9-af06-458b-ae81-52a922d32874","savedPayload":{"position":{"x":44239.36337395328,"y":29209.697635104123},"targetPosition":{"x":44060.2198905935,"y":29477.959510651268},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"fe3e9758-12d8-46da-a7e9-968a340f0ae5","savedPayload":{"position":{"x":44060.2198905935,"y":29477.959510651268},"targetPosition":{"x":43881.1373749603,"y":29746.194646546814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"9f683143-a33f-42c1-9fa8-c601f01ee4e1"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"5ba98b0e-e71d-4c91-a3b2-ca98f7bf3e1b","savedPayload":{"position":{"x":44748.497652339385,"y":29318.442706041416},"targetPosition":{"x":44314.89113382611,"y":29532.287195826062},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"e3fe5518-65d4-4413-9d1f-624025766f97","savedPayload":{"position":{"x":44314.89113382611,"y":29532.287195826062},"targetPosition":{"x":43881.1373749603,"y":29746.194646546814},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"980ceb1d-7be6-454f-90d9-01ba1fd4a65d"}}}],"id":"80415df6-6aca-42d5-b91d-6d5d6326f72f","savedPayload":{"position":{"x":43881.1373749603,"y":29746.194646546814},"targetPosition":{"x":43638.5937543753,"y":29959.064822103785},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"a2a8253d-ea54-431a-a623-627a9d80c96d","savedPayload":{"position":{"x":43638.5937543753,"y":29959.064822103785},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Candle & Volume Stairs Patters","bot":{"type":"Indicator Bot Instance","name":"Stairs Patterns","code":" {\n \"repo\": \"Stairs-Patterns-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"9b578904-5f8d-4011-ac4e-a0ad42f78a3d","savedPayload":{"position":{"x":44681.5668151454,"y":29910.493454022107},"targetPosition":{"x":44392.18828953674,"y":30053.0939332087},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"2430f966-d667-43de-ad9e-1a0a748fc252","savedPayload":{"position":{"x":44392.18828953674,"y":30053.0939332087},"targetPosition":{"x":44102.8905640764,"y":30195.677451532058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"80c87e44-7b3a-449d-9bf4-d14502bfa837"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"ab1d35fe-8782-42de-8017-2fc10bc5342c","savedPayload":{"position":{"x":45068.0607289357,"y":30258.627798760706},"targetPosition":{"x":44585.557101487946,"y":30227.1784612219},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"0d5c61fd-1073-4f08-b951-65a1d040e0f2","savedPayload":{"position":{"x":44585.557101487946,"y":30227.1784612219},"targetPosition":{"x":44102.8905640764,"y":30195.677451532058},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"2924712f-7d80-4f36-8822-71a12cb485f6"}}}],"id":"9be6d863-a4df-4b43-ba48-96f5a8b252a9","savedPayload":{"position":{"x":44102.8905640764,"y":30195.677451532058},"targetPosition":{"x":43786.33364239331,"y":30258.56207231393},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"1efe1e8c-fec4-406e-8b8a-51feabd90934","savedPayload":{"position":{"x":43786.33364239331,"y":30258.56207231393},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Bollinger Bands & Percentage Bandwidth","bot":{"type":"Indicator Bot Instance","name":"Bollinger Bands","code":" {\n \"repo\": \"Bollinger-Bands-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"936109e1-9d5f-4738-9eee-26e98c6675a9","savedPayload":{"position":{"x":44713.87406914462,"y":30737.306304570255},"targetPosition":{"x":44391.91978758277,"y":30716.26641552209},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"69c2cfe4-3a79-45d0-8742-ff3f368431f6","savedPayload":{"position":{"x":44391.91978758277,"y":30716.26641552209},"targetPosition":{"x":44070.057249921745,"y":30695.231631186056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"e598ee86-1e18-4aa1-95c2-64aaf66776ca"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"75d8a16d-5ff3-4771-b32a-bf5ea071e7fc","savedPayload":{"position":{"x":44874.2365621043,"y":31232.47693669704},"targetPosition":{"x":44472.19774741333,"y":30963.92831312466},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c437054a-3447-486b-ab42-b267b800f96a","savedPayload":{"position":{"x":44472.19774741333,"y":30963.92831312466},"targetPosition":{"x":44070.057249921745,"y":30695.231631186056},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"941a0543-0cc0-4a5d-a782-728d2835c100"}}}],"id":"9604d5b6-af02-4ac3-91aa-fa82dcd316bf","savedPayload":{"position":{"x":44070.057249921745,"y":30695.231631186056},"targetPosition":{"x":43764.46278318986,"y":30591.515062036906},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false}}},"id":"ed9d924d-7a8b-46da-a4e9-eb121329fe49","savedPayload":{"position":{"x":43764.46278318986,"y":30591.515062036906},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"Bollinger Channels & Sub-Channels","bot":{"type":"Indicator Bot Instance","name":"Bollinger Channels","code":" {\n \"repo\": \"Bollinger-Channels-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"6e4bd29a-ffe6-4bbd-a114-62a0efe82a12","savedPayload":{"position":{"x":44327.45578539955,"y":31470.472421210285},"targetPosition":{"x":44059.29115231958,"y":31291.213234147825},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"b3c5ca8e-cc9d-4662-96cb-82d7c5801f67","savedPayload":{"position":{"x":44059.29115231958,"y":31291.213234147825},"targetPosition":{"x":43791.2422938607,"y":31111.98146528281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"28be432d-80ca-46b3-859a-55541e24b2b4"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"d6995a0d-dffd-4213-b159-1919fa35f1b8","savedPayload":{"position":{"x":44218.71377608719,"y":31979.437936210907},"targetPosition":{"x":44004.95543909178,"y":31545.819012576827},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"d640b042-3b50-4f02-961a-9f4e9aab1015","savedPayload":{"position":{"x":44004.95543909178,"y":31545.819012576827},"targetPosition":{"x":43791.2422938607,"y":31111.98146528281},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"bc15b49d-4547-4bac-a28b-193eb0158fe3"}}}],"id":"88c5bffa-e658-4a99-89b3-b3b03d40d2e6","savedPayload":{"position":{"x":43791.2422938607,"y":31111.98146528281},"targetPosition":{"x":43578.70277309983,"y":30869.247361706733},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"10972cbd-be85-4344-bf34-8aab4dc3a23b","savedPayload":{"position":{"x":43578.70277309983,"y":30869.247361706733},"targetPosition":{"x":43154.019892814606,"y":30384.267203727948},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"8e0023df-5beb-4187-a53b-908c363861f9","savedPayload":{"position":{"x":43156.4841390823,"y":30390.62206967252},"targetPosition":{"x":42524.09981665908,"y":30516.583554818837},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},"id":"930ad389-2e02-405d-a608-628df967e702","savedPayload":{"position":{"x":42524.13406926621,"y":30516.62762664381},"targetPosition":{"x":42103.57376366796,"y":30608.802492750398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"216101a4-697c-41c6-989c-a5f8f181c624","savedPayload":{"position":{"x":42535.600772206046,"y":30604.746043496154},"targetPosition":{"x":42103.57376366796,"y":30608.802492750398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"7449a608-32ca-4285-94d1-c96791e2817f"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Data Mining') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"c1cbecc9-8340-4435-a0ab-140334ba104d","savedPayload":{"position":{"x":42523.47787384033,"y":30705.04188731046},"targetPosition":{"x":42103.57376366796,"y":30608.802492750398},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"ddd80520-a052-464b-a7b8-23b72387086f","savedPayload":{"position":{"x":42103.57376366796,"y":30608.802492750398},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Sparta Data Mining Tasks","templateStructure":{"type":"Template Structure","name":"New Template Structure","taskManagers":{"type":"Task Manager","name":"Sparta","tasks":[{"type":"Task","name":"SMA","bot":{"type":"Indicator Bot Instance","name":"SMA","code":" {\n\"repo\": \"SMA-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"592304dd-b412-4f42-9f24-1c2b6305538a","savedPayload":{"position":{"x":44081.07402893388,"y":29261.998897990103},"targetPosition":{"x":44026.645778640726,"y":29579.221989214726},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"4829d508-b32b-402c-8d27-4493549196b5","savedPayload":{"position":{"x":44026.645778640726,"y":29579.221989214726},"targetPosition":{"x":43972.4065421682,"y":29897.10630245453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4de8af37-754b-4178-9960-49f8dd9fea12","savedPayload":{"position":{"x":45181.23630246372,"y":29451.731721515236},"targetPosition":{"x":44576.21686964499,"y":29674.70505877392},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"5f34959e-a63c-4298-8323-a16f75e23431","savedPayload":{"position":{"x":44576.21686964499,"y":29674.70505877392},"targetPosition":{"x":43972.4065421682,"y":29897.10630245453},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"6db29c31-152b-472a-852e-0e4a36bec524","savedPayload":{"position":{"x":43972.4065421682,"y":29897.10630245453},"targetPosition":{"x":43560.447957279874,"y":30392.592888800373},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"20c34f88-6b58-474b-b69d-02712765c0db","savedPayload":{"position":{"x":43560.447957279874,"y":30392.592888800373},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"EMA","bot":{"type":"Indicator Bot Instance","name":"EMA","code":" {\n\"repo\": \"EMA-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"64c7ca91-01ce-4dab-8b29-7cfa8e1f19a4","savedPayload":{"position":{"x":44859.514899843285,"y":30121.011006320903},"targetPosition":{"x":44627.96868788552,"y":30345.756950636583},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"31761ef4-c98b-4657-a37f-652eff5340ea","savedPayload":{"position":{"x":44627.96868788552,"y":30345.756950636583},"targetPosition":{"x":44397.60154159941,"y":30571.180521093203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"7610e87b-a8c3-475c-a44f-665e26614ad8","savedPayload":{"position":{"x":45637.77871650676,"y":30919.988025030405},"targetPosition":{"x":45018.119270098556,"y":30745.59259193282},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"c4d61b48-9c23-47f1-937b-1729767a26f6","savedPayload":{"position":{"x":45018.119270098556,"y":30745.59259193282},"targetPosition":{"x":44397.60154159941,"y":30571.180521093203},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"34656b7b-826e-4ebd-943a-407d8c91ea24","savedPayload":{"position":{"x":44397.60154159941,"y":30571.180521093203},"targetPosition":{"x":43773.61593885067,"y":30730.18991821047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"28be18c7-c387-435e-ae7d-dfeca201bce5","savedPayload":{"position":{"x":43773.61593885067,"y":30730.18991821047},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"MACD","bot":{"type":"Indicator Bot Instance","name":"MACD","code":" {\n\"repo\": \"MACD-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"4f7ed8bc-c0b7-4930-80c3-67c7d5378066","savedPayload":{"position":{"x":44983.300829306914,"y":31272.18736888164},"targetPosition":{"x":44664.6903058424,"y":31318.66331105525},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"9cc4175f-28ad-4307-a8d6-0df303a02be1","savedPayload":{"position":{"x":44664.6903058424,"y":31318.66331105525},"targetPosition":{"x":44345.07414697165,"y":31365.355280493008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"3c7ff3c1-be17-4c7d-ba0a-1cc66a41970b","savedPayload":{"position":{"x":45142.05800779668,"y":32376.79732070541},"targetPosition":{"x":44743.53125300685,"y":31871.431438437223},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"a585a9e1-e18d-40b6-b364-75f01e840a4b","savedPayload":{"position":{"x":44743.53125300685,"y":31871.431438437223},"targetPosition":{"x":44345.07414697165,"y":31365.355280493008},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"8e5db945-8507-4489-9288-21cfa1e9301c"}}}],"id":"525c3ef8-145e-4919-bf2d-983db99a5cdb","savedPayload":{"position":{"x":44345.07414697165,"y":31365.355280493008},"targetPosition":{"x":43746.71464374547,"y":31126.66272590179},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false}}},"id":"b652ba10-fb7a-4a93-bd24-9500bb7d25ec","savedPayload":{"position":{"x":43746.71464374547,"y":31126.66272590179},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Task","name":"RSI","bot":{"type":"Indicator Bot Instance","name":"RSI","code":" {\n\"repo\": \"RSI-Indicator-Bot\"\n }","processes":[{"type":"Indicator Process Instance","name":"Multi-Period-Market","code":" {\n \"process\": \"Multi-Period-Market\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"002570f4-0254-46d4-ba77-c23598fd8e51","savedPayload":{"position":{"x":44404.99566369404,"y":32278.87547216769},"targetPosition":{"x":44119.73316461256,"y":32128.360134722952},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"16a0815f-b793-4ca8-aa09-78f9f447f110","savedPayload":{"position":{"x":44119.73316461256,"y":32128.360134722952},"targetPosition":{"x":43835.079063319456,"y":31978.452555154123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"96f31416-5090-428a-be83-985a0b3ab275"}}},{"type":"Indicator Process Instance","name":"Multi-Period-Daily","code":" {\n \"process\": \"Multi-Period-Daily\"\n }","marketReference":{"type":"Market Reference","name":"Bitfinex BTC/USDT","id":"a1c6a73c-d518-478c-b1bb-cb1b0b4f08db","savedPayload":{"position":{"x":43886.22543093295,"y":33266.94789117124},"targetPosition":{"x":43860.82494306721,"y":32622.647306884006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"b734f59f-f29c-450b-a6e4-6d2345a1082a"}}},"id":"123f248b-aa95-4d1c-a6c2-9fc70fc2b816","savedPayload":{"position":{"x":43860.82494306721,"y":32622.647306884006},"targetPosition":{"x":43835.079063319456,"y":31978.452555154123},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"f1177bcd-22dc-425b-8f30-878844aa82b8"}}}],"id":"007d0fe3-9637-4a4f-8078-730af1716e1b","savedPayload":{"position":{"x":43835.079063319456,"y":31978.452555154123},"targetPosition":{"x":43491.8595100809,"y":31433.159671292047},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}},"id":"da1cddfc-5d56-46e7-b14a-0b21127cf6e3","savedPayload":{"position":{"x":43491.8595100809,"y":31433.159671292047},"targetPosition":{"x":43148.168590975445,"y":30888.34333493857},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}}],"id":"6907a34a-7247-4717-8be3-154ebc2cacfc","savedPayload":{"position":{"x":43148.11347120946,"y":30888.090667089848},"targetPosition":{"x":42504.88095204648,"y":30846.032220824836},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{"isRunning":false,"shortcutKey":"j"}}},"id":"ac392204-2e14-4744-a636-063c2bf461ae","savedPayload":{"position":{"x":42504.27139300684,"y":30851.012294286214},"targetPosition":{"x":42074.25206166931,"y":30831.16755482893},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"4d93f230-422c-4a10-8e6d-50381aa60aba","savedPayload":{"position":{"x":42493.41215118041,"y":30936.76335896573},"targetPosition":{"x":42074.25206166931,"y":30831.16755482893},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"7449a608-32ca-4285-94d1-c96791e2817f"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.taskManagers === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Task Manager.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Data Mining') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.taskManagers)\n \n setup(templateClone, target, exchange, 'Exchange Tasks', 'taskManagers')\n for (let i = 0; i < templateClone.tasks.length; i++) {\n let task = templateClone.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n process.marketReference.payload.referenceParent = market\n }\n }\n }\n }\n }\n\n return templateClone\n }\n}","id":"b2fdaf25-bbd2-476a-93ed-faf23b3bfa00","savedPayload":{"position":{"x":42453.90112747623,"y":31035.239134294017},"targetPosition":{"x":42074.25206166931,"y":30831.16755482893},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"83556c43-8483-48e3-be7e-36f9dbb70f08","savedPayload":{"position":{"x":42074.25206166931,"y":30831.16755482893},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Install Time Machine","templateStructure":{"type":"Template Structure","name":"New Template Structure","timeMachines":{"type":"Time Machine","name":"My Time Machine","code":"{}","timeScale":{"type":"Time Scale","name":"New Time Scale","code":"{\n \"fromDate\": \"2018-12-30T23:22:24.048Z\",\n \"toDate\": \"2019-01-10T19:44:56.900Z\",\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"acf304c4-443a-4a57-880e-13d330e754c4","savedPayload":{"position":{"x":43443.89063743913,"y":31090.824625356254},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3540,\n \"maxValue\": 4069.8,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"153feb9a-76e1-4838-ae3e-33cacd7ca646","savedPayload":{"position":{"x":43548.41457047276,"y":31184.375778493333},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"7890a24e-5bf5-450f-bb35-f23b3eb495f6","savedPayload":{"position":{"x":43607.79031913014,"y":31290.37951635624},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{}}},"timelineCharts":[{"type":"Timeline Chart","name":"Indicators","layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 2,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"Candles","code":"{\n \"status\": \"on\",\n \"showPanels\": false\n}","id":"38e64db1-376d-45de-a92c-a6fb25282507","savedPayload":{"position":{"x":44109.83415963966,"y":30937.86521235062},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candles","id":"884a5d08-b607-4b2b-8e7a-8adeb7e8dd4a"}}},{"type":"Layer","name":"Bollinger Bands","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"9ad6d912-ff9c-45c8-bfce-bcd0d86e3977","savedPayload":{"position":{"x":44205.6098160294,"y":30959.823517408513},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Bands","id":"68df01d8-d9a8-400c-aa76-8da44c5dc040"}}},{"type":"Layer","name":"Bollinger Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6c5e7c7f-a010-4d59-8299-d8d4534aa7f8","savedPayload":{"position":{"x":44293.08407507179,"y":31002.672018369994},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Channels Objects","id":"632f0f98-eb2c-4820-9943-662a4903be81"}}},{"type":"Layer","name":"Bollinger Sub-Channels Objects","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"41db7192-ec70-4f95-85dd-343bfa05258e","savedPayload":{"position":{"x":44368.348611497284,"y":31063.845937901744},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"88a1ca81-b317-4ab2-b651-c8fa566e8e28"}}},{"type":"Layer","name":"Candle-Stairs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"13c5c367-3758-4f8f-883c-ba6f1ee3bef2","savedPayload":{"position":{"x":44427.90815708521,"y":31140.140566409682},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Candle-Stairs","id":"5979844b-35e7-4c04-938f-18e6156352a0"}}},{"type":"Layer","name":"Popular SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"0fac6cd3-3172-4854-9ce2-f2827023f503","savedPayload":{"position":{"x":44468.925526457206,"y":31227.704458882996},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular SMAs","id":"5bce195f-7d08-4281-bb9d-ca1e9417068e"}}},{"type":"Layer","name":"Base7 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"88c7874f-9372-4dc5-9bb1-491ca58ceded","savedPayload":{"position":{"x":44489.41919141794,"y":31322.158131655397},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 SMAs","id":"b9145946-1899-4fac-b531-47ed600873be"}}},{"type":"Layer","name":"Base11 SMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"6570c568-8d96-427f-9dbe-822d0fe9f900","savedPayload":{"position":{"x":44488.32436810392,"y":31418.775117724905},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 SMAs","id":"c9daf265-f452-4372-a8a9-6ed9c0d7a0ed"}}},{"type":"Layer","name":"Popular EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a133263e-3eca-4d4a-b04e-8f40e5ec78ba","savedPayload":{"position":{"x":44465.73931006295,"y":31512.698451768847},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Popular EMAs","id":"fba1f18e-dd5b-48e6-82b1-ff04a624f090"}}},{"type":"Layer","name":"Base7 EMAs","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"32fcaa2a-af1d-4aa6-adf0-36dd24759ca4","savedPayload":{"position":{"x":44422.8561844238,"y":31599.25111918654},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base7 EMAs","id":"64f059bf-66e2-463c-aed1-800b5fa195ab"}}},{"type":"Layer","name":"Base11 EMAs","code":"{\n \"status\": \"off\"\n}","id":"3d5d19b9-481d-4542-b279-06303aa9edef","savedPayload":{"position":{"x":44361.815504829836,"y":31674.11383736746},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Base11 EMAs","id":"5b6e48e5-259f-44f3-b40e-a29982204c95"}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"04f846d4-f203-4eed-807d-214655d4551b","savedPayload":{"position":{"x":44285.67018420087,"y":31733.55538390932},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Layer","name":"","code":"{ \n\"status\": \"off\"\n}","id":"10e19911-11b2-4b8d-86fa-b7a5de9f93e4","savedPayload":{"position":{"x":44192.00661868389,"y":31775.826453588827},"targetPosition":{"x":44059.9661604771,"y":31365.62225052206},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"5bfa0541-b9bb-4dc6-a5a0-5684278c2a16","savedPayload":{"position":{"x":44064.1403028168,"y":31365.379034570546},"targetPosition":{"x":43636.06155236318,"y":31408.73749637401},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false},"frame":{"position":{"x":0,"y":80},"width":150,"height":190,"radius":0}}},"id":"63c36d69-c222-4687-a535-c147abcfb9a9","savedPayload":{"position":{"x":43636.91567322342,"y":31409.148998482582},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Volumes","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": 0,\n \"minValue\": 3496.3969296811883,\n \"maxValue\": 12400.41819345618,\n \"autoMinScale\": true,\n \"autoMaxScale\": true\n}","id":"6f07d76a-363a-4200-a7f4-ee9daf700744","savedPayload":{"position":{"x":43955.58254498447,"y":31504.999869023693},"targetPosition":{"x":43630.44688258736,"y":31530.628144529433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"a6350c1f-64b3-4b13-921b-aea1eb09b6c1","savedPayload":{"position":{"x":44162.92610911858,"y":31723.43961416986},"targetPosition":{"x":43951.317213648734,"y":31685.17817589269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volumes","id":"4ec71a01-3d83-4e8e-9780-bcb700dcf66a"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"3b5badc4-8160-4c8f-ae19-8db7970e581d","savedPayload":{"position":{"x":44114.39338158986,"y":31825.20197219218},"targetPosition":{"x":43951.317213648734,"y":31685.17817589269},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Volume-Stairs","id":"dd1f89bc-3c2f-4fc4-a5f1-de7a34e0997e"}}}],"id":"929661b5-acce-457c-a8cc-505a64cfacf2","savedPayload":{"position":{"x":43951.317213648734,"y":31685.17817589269},"targetPosition":{"x":43630.44688258736,"y":31530.628144529433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":150,"y":80},"width":150,"height":40,"radius":0}}},"id":"6f781018-392b-4ba2-b00f-68d4c5498f2b","savedPayload":{"position":{"x":43631.41217475319,"y":31531.65282662454},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"d4098b73-7e25-434e-8fd9-342393cbb400"}}},{"type":"Timeline Chart","name":"Oscilators","rateScale":{"type":"Rate Scale","name":"New Rate Scale","code":"{\n \"offset\": -27,\n \"minValue\": 211.77170422115967,\n \"maxValue\": 1022.3595879377227,\n \"autoMinScale\": false,\n \"autoMaxScale\": true\n}","id":"5074db98-f742-4771-a68e-a001b9c45182","savedPayload":{"position":{"x":43910.491619109416,"y":31713.366059742882},"targetPosition":{"x":43591.29793347202,"y":31646.46255388601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}","layers":[{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"830c5295-25ca-4f08-bc7c-262be9e2fb17","savedPayload":{"position":{"x":44048.659620717015,"y":31981.598308484554},"targetPosition":{"x":43855.92031079496,"y":31884.849056194114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Percentage Bandwidth","id":"9b5b1b81-c68c-45a5-8123-1a114a24b744"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": false\n}","id":"8aa6fde7-89cb-43af-bea1-149a0b94c29c","savedPayload":{"position":{"x":43973.1811514251,"y":32065.381892664318},"targetPosition":{"x":43855.92031079496,"y":31884.849056194114},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"RSI14","id":"71351f63-10b4-4f89-ac9f-a8380bb0b75e"}}}],"id":"2f754398-30ac-4afa-8c12-c37013b8a4da","savedPayload":{"position":{"x":43855.92031079496,"y":31884.849056194114},"targetPosition":{"x":43591.29793347202,"y":31646.46255388601},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":300,"y":80},"width":150,"height":40,"radius":0}}},"id":"805c6659-38e2-4959-86d0-cbabc87a8184","savedPayload":{"position":{"x":43591.73124976313,"y":31647.85361733665},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Live Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{ \n\"value\": \"24-hs\"\n}","id":"1ce27f77-c38b-49b1-8ea3-c32687bdb655","savedPayload":{"position":{"x":43783.37261367022,"y":31886.571656235734},"targetPosition":{"x":43521.05702874397,"y":31745.958156152803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"b672763b-52c9-47c0-8b03-8156a564a6bb","savedPayload":{"position":{"x":43886.41967462734,"y":32119.941637293174},"targetPosition":{"x":43690.30875570328,"y":32020.727785295832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"247187f3-1aaf-4de1-a7db-c3a550cdbad0"}}},{"type":"Layer","name":"","code":"{\"status\":\"off\"}","id":"e330fc5d-223f-4d13-8251-84be95894b04","savedPayload":{"position":{"x":43842.96035016497,"y":32187.313417315454},"targetPosition":{"x":43690.30875570328,"y":32020.727785295832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"4deb0411-a8ea-465e-adcd-e0515f291a2d"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"63396270-7226-4fe7-8a77-072a29e73691","savedPayload":{"position":{"x":43780.15086984105,"y":32228.511805578368},"targetPosition":{"x":43690.30875570328,"y":32020.727785295832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"cec4bf02-ebee-48ad-a0cc-25629e34fd65"}}},{"type":"Layer","name":"","code":"{\"status\":\"off\"}","id":"d08e1626-0cdc-42b6-ab7e-ed35fc9f0f43","savedPayload":{"position":{"x":43677.873644697815,"y":32238.940731261504},"targetPosition":{"x":43690.30875570328,"y":32020.727785295832},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"c9cbb548-60ef-491d-b083-5825573db463"}}}],"id":"c9302ae8-6f99-41c2-86d7-04e6b1cf1817","savedPayload":{"position":{"x":43690.30875570328,"y":32020.727785295832},"targetPosition":{"x":43521.05702874397,"y":31745.958156152803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1770,"y":80},"width":150,"height":40,"radius":0}}},"id":"02c55b2b-cb65-4131-aa82-de04ce1ca1c6","savedPayload":{"position":{"x":43520.96158307316,"y":31748.299529972584},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Forward Testing","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{ \n\"value\": \"24-hs\"\n}","id":"73a8ce0d-317a-4162-b961-8ff3df64c1c3","savedPayload":{"position":{"x":43684.53879623016,"y":31970.012630752735},"targetPosition":{"x":43425.560345834936,"y":31822.587842697758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"37d4edc7-51fc-4c9b-93b9-4f0f0e795208","savedPayload":{"position":{"x":43670.419810252366,"y":32282.9624054417},"targetPosition":{"x":43510.26407319966,"y":32132.59925389586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"456e8c88-ba2b-487d-aa2a-48f6c1144d22"}}},{"type":"Layer","name":"","code":"{\"status\":\"off\"}","id":"0f0b5b97-3962-4eaf-861e-edd447bc4d61","savedPayload":{"position":{"x":43609.82505581555,"y":32335.475436908324},"targetPosition":{"x":43510.26407319966,"y":32132.59925389586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"6abfb364-1883-488b-ac98-ffa234013e95"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"fcb15fbd-c988-4b80-add2-88c0d20d2f90","savedPayload":{"position":{"x":43537.9321061552,"y":32357.541018716125},"targetPosition":{"x":43510.26407319966,"y":32132.59925389586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"cdba5840-e1d7-4909-9422-423299403f3c"}}},{"type":"Layer","name":"","code":"{\"status\":\"off\"}","id":"ec034ac9-5e70-44aa-99c7-d0afd8d0f78c","savedPayload":{"position":{"x":43436.996393413065,"y":32338.36265829784},"targetPosition":{"x":43510.26407319966,"y":32132.59925389586},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"0dbb4a2c-c32d-4bd1-a410-09ce23613604"}}}],"id":"2bc6080e-b3b8-4240-946b-b1475b407bdc","savedPayload":{"position":{"x":43510.26407319966,"y":32132.59925389586},"targetPosition":{"x":43425.560345834936,"y":31822.587842697758},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1620,"y":80},"width":150,"height":40,"radius":0}}},"id":"de6ca021-6112-41ab-8a4e-5b24682c397e","savedPayload":{"position":{"x":43424.769835654646,"y":31824.82577366588},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Paper Trading","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{ \n\"value\": \"24-hs\"\n}","id":"10022324-b8b0-4d63-ac68-1a52fb1a3bc8","savedPayload":{"position":{"x":43457.36591905919,"y":32128.545321458452},"targetPosition":{"x":43313.35171232311,"y":31869.073818844914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"89f07041-b4af-47e8-9282-06f889d1873f","savedPayload":{"position":{"x":43418.773208240214,"y":32379.61274434846},"targetPosition":{"x":43307.45180126069,"y":32190.479627192908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"442bd8c3-1825-4415-84bd-e2f1148b3f92"}}},{"type":"Layer","name":"","code":"{\"status\":\"off\"}","id":"3ca3b1c6-2f56-4a69-a5b1-c6461b339286","savedPayload":{"position":{"x":43345.89520538448,"y":32412.88315685549},"targetPosition":{"x":43307.45180126069,"y":32190.479627192908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"8ab46f29-e225-42ee-a17e-297b2ebcfdbe"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"8306fbd3-4c33-4796-8a00-259702921276","savedPayload":{"position":{"x":43270.93153284485,"y":32413.314969240215},"targetPosition":{"x":43307.45180126069,"y":32190.479627192908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"2f5a9ed9-80b6-412f-9d24-47f49653be9b"}}},{"type":"Layer","name":"","code":"{\"status\":\"off\"}","id":"bb634599-045c-4475-a4ed-af6798660d58","savedPayload":{"position":{"x":43179.038096809825,"y":32367.059336454447},"targetPosition":{"x":43307.45180126069,"y":32190.479627192908},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"ddb30433-09f1-44b5-afdc-28a05f218c25"}}}],"id":"0a45ce5c-57f1-442b-b5cf-a86812267f3c","savedPayload":{"position":{"x":43307.45180126069,"y":32190.479627192908},"targetPosition":{"x":43313.35171232311,"y":31869.073818844914},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1470,"y":80},"width":150,"height":40,"radius":0}}},"id":"d5405af5-9184-4017-805d-a7f9f9256524","savedPayload":{"position":{"x":43313.408078992084,"y":31871.040532079347},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}},{"type":"Timeline Chart","name":"Backtesting","timeFrameScale":{"type":"Time Frame Scale","name":"New Time Frame Scale","code":"{\"value\":\"01-hs\"}","id":"37fba5b0-3028-4687-bb7b-1162995b2fe2","savedPayload":{"position":{"x":43247.66539437884,"y":32171.10718387298},"targetPosition":{"x":43182.81404257353,"y":31880.527527777554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"layersManager":{"type":"Layers Manager","name":"New Layers Manager","code":"{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"right\"\n }\n}","layers":[{"type":"Layer","name":"","code":"{\n \"status\": \"off\",\n \"showPanels\": true\n}","id":"068284a9-fd5b-4b68-9103-836637fdcb0b","savedPayload":{"position":{"x":43141.24685193997,"y":32394.974326897627},"targetPosition":{"x":43087.94547795279,"y":32181.92277542006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Simulation","id":"e7f2581f-1dfd-44eb-82d9-a9be799307e6"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"4cfdb7dd-af3d-444d-abb8-f04d77e73889","savedPayload":{"position":{"x":43061.65443685055,"y":32406.489847624485},"targetPosition":{"x":43087.94547795279,"y":32181.92277542006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Conditions","id":"24dfc84b-74ec-4d79-9e97-4eb17dd2ac1d"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"1ea11e8c-049c-4ff1-ae9a-0f27d4165127","savedPayload":{"position":{"x":42989.62406345691,"y":32385.45184645436},"targetPosition":{"x":43087.94547795279,"y":32181.92277542006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Trades","id":"ce87f885-a79b-4675-9cfd-337daed079e5"}}},{"type":"Layer","name":"","code":"{\n \"status\": \"off\"\n}","id":"996074fc-0efb-4bf8-8f16-95cbad2f5043","savedPayload":{"position":{"x":42914.59155513783,"y":32314.693016214136},"targetPosition":{"x":43087.94547795279,"y":32181.92277542006},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Product","name":"Strategies","id":"40c22092-c1c9-4a45-893a-b7372833df84"}}}],"id":"c49c4542-bc88-44c2-b537-6f2d5b3b3a3a","savedPayload":{"position":{"x":43087.94547795279,"y":32181.92277542006},"targetPosition":{"x":43182.81404257353,"y":31880.527527777554},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{"isRunning":false},"frame":{"position":{"x":1320,"y":80},"width":150,"height":40,"radius":0}}},"id":"cfda3689-ce58-460a-81c3-4b99377e7184","savedPayload":{"position":{"x":43178.925552637236,"y":31882.433033500736},"targetPosition":{"x":43206.61379073726,"y":31451.83743409004},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"a4a8b171-8b07-4895-8c25-cedd8fa9c957","savedPayload":{"position":{"x":43207.47960775742,"y":31452.30254639267},"targetPosition":{"x":42800.54620324026,"y":31314.203008924032},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":2},"uiObject":{"isRunning":false,"shortcutKey":""},"frame":{"position":{"x":-1305,"y":-15},"width":240,"height":112.375,"radius":0}}},"id":"e6469c64-26cb-4a30-951d-a68147cf1ba5","savedPayload":{"position":{"x":42800.54620324026,"y":31314.203008924032},"targetPosition":{"x":41988.325523777254,"y":31038.485418663222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":3},"uiObject":{"isRunning":false}}},"templateTarget":{"type":"Template Target","name":"New Template Target","id":"c01a6962-8b0e-4b06-8705-8751660aabbf","savedPayload":{"position":{"x":42365.11308086226,"y":31246.461635860775},"targetPosition":{"x":41988.325523777254,"y":31038.485418663222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Dashboard","name":"Super Action Generated","id":"64fa2a31-21ea-4b56-a625-dc4082876a89"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateStructure.timeMachines === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Structure must have a child Time Machine.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Dashboard') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Dashboard.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n let templateClone = clone(templateScript.templateStructure.timeMachines)\n target.timeMachines.push(templateClone)\n setup(templateClone, target)\n\n return templateClone\n }\n}","id":"968fd18b-2a1b-41ca-9317-23f301607857","savedPayload":{"position":{"x":42306.22602158549,"y":31328.708935995863},"targetPosition":{"x":41988.325523777254,"y":31038.485418663222},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{}}},"id":"41c01e94-6c5c-4b71-9c70-8d962c86fec0","savedPayload":{"position":{"x":41988.325523777254,"y":31038.485418663222},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/*\nMaster Script\n*/\nfunction newNewMasterScriptInstance() {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction, masterScript) {\n /* Validations */\n if (superAction.payload.parentNode.type !== 'Market') {\n superAction.payload.uiObject.setErrorMessage('Super Action Parent Node needs to be of type Market.')\n return\n }\n if (superAction.payload.parentNode.baseAsset === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Node needs to have a child Market Base Asset.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Node needs to have a child Market Quoted Asset.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Base Asset Node needs to reference an Asset.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market Quoted Asset Node needs to reference an Asset.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Asset Node needs to be a child of Exchange Assets.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset.payload.referenceParent.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Asset Node needs to be a child of Exchange Assets.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Assets needs to be a child of an Exchange Node.')\n return\n }\n if (superAction.payload.parentNode.quotedAsset.payload.referenceParent.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Assets needs to be a child of an Exchange Node.')\n return\n }\n if (superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode.payload.parentNode.id !== superAction.payload.parentNode.quotedAsset.payload.referenceParent.payload.parentNode.payload.parentNode.id) {\n superAction.payload.uiObject.setErrorMessage('Assets must be from the same Exchange.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market needs to be a child of Exchange Markets.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Markets needs to be a child of an Exchange.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.id !== superAction.payload.parentNode.baseAsset.payload.referenceParent.payload.parentNode.payload.parentNode.id) {\n superAction.payload.uiObject.setErrorMessage('Assets and Market must be defined at the same Exchange.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode.exchangeAccounts === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange needs have a child Exchange Accounts.')\n return\n }\n\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n if (templateScript.javascriptCode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Javascript Code.')\n return\n }\n if (templateScript.templateStructure === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Template Structure.')\n return\n }\n if (templateScript.templateTarget === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Template Target.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent.')\n return\n }\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n executionResult = templateScriptInstance.runValidations(superAction)\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n return true\n }\n\n function runScript(superAction, masterScript) {\n let market = superAction.payload.parentNode\n let exchange = superAction.payload.parentNode.payload.parentNode.payload.parentNode\n let singleMarketData\n let backSessionReference\n let paperSessionReference\n let liveSessionReference\n let ForwardSessionReference\n let dataMiningTaskManagers = []\n let testingEnvironmentTaskManager\n let productionEnvironmentTaskManager\n let timeMachine\n\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateClone\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n templateClone = templateScriptInstance.runScript(superAction, templateScript)\n }\n\n if (executionResult !== true) { return false }\n\n switch (templateClone.payload.parentNode.payload.parentNode.type) {\n case 'Session Independent Data': {\n singleMarketData = templateClone\n break\n }\n case 'Session Based Data': {\n switch (templateClone.templateType) {\n case 'Backtesting Session': {\n backSessionReference = templateClone\n break\n }\n case 'Paper Trading Session': {\n paperSessionReference = templateClone\n break\n }\n case 'Live Trading Session': {\n liveSessionReference = templateClone\n break\n }\n case 'Forward Testing Session': {\n ForwardSessionReference = templateClone\n break\n }\n }\n break\n }\n case 'Data Mining': {\n dataMiningTaskManagers.push(templateClone)\n break\n }\n case 'Testing Environment': {\n testingEnvironmentTaskManager = templateClone\n break\n }\n case 'Production Environment': {\n productionEnvironmentTaskManager = templateClone\n break\n }\n case 'Charting Space': {\n timeMachine = templateClone\n break\n }\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n /* Here we will find the sessions within the tasks in order to put them as a reference of the Session Reference nodes we already have */\n let session\n session = findSession('Backtesting Session', testingEnvironmentTaskManager)\n backSessionReference.payload.referenceParent = session\n session = findSession('Paper Trading Session', testingEnvironmentTaskManager)\n paperSessionReference.payload.referenceParent = session\n session = findSession('Live Trading Session', productionEnvironmentTaskManager)\n liveSessionReference.payload.referenceParent = session\n session = findSession('Forward Testing Session', productionEnvironmentTaskManager)\n ForwardSessionReference.payload.referenceParent = session\n\n function findSession(sessionType, taskManager) {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.session !== undefined) {\n if (process.session.type === sessionType) {\n return process.session\n }\n }\n }\n }\n }\n }\n }\n\n /* Here, we are going to connect the layers of the charts at the Time Machine */\n for (let i = 0; i < timeMachine.timelineCharts.length; i++) {\n let timelineChart = timeMachine.timelineCharts[i]\n switch (timelineChart.name) {\n case 'Indicators': {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(singleMarketData, 'Candles')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Bands')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 2: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 3: {\n let dataProduct = findDataProduct(singleMarketData, 'Bollinger Sub-Channels Objects')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 4: {\n let dataProduct = findDataProduct(singleMarketData, 'Candle-Stairs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 5: {\n let dataProduct = findDataProduct(singleMarketData, 'Popular SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 6: {\n let dataProduct = findDataProduct(singleMarketData, 'Base5 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 7: {\n let dataProduct = findDataProduct(singleMarketData, 'Base6 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 8: {\n let dataProduct = findDataProduct(singleMarketData, 'Base7 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 9: {\n let dataProduct = findDataProduct(singleMarketData, 'Base11 SMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 10: {\n let dataProduct = findDataProduct(singleMarketData, 'Popular EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 11: {\n let dataProduct = findDataProduct(singleMarketData, 'Base7 EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 12: {\n let dataProduct = findDataProduct(singleMarketData, 'Base11 EMAs')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n break\n }\n case 'Volumes': {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(singleMarketData, 'Volumes')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'Volume-Stairs')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n break\n }\n case 'Oscilators': {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(singleMarketData, 'Percentage Bandwidth')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(singleMarketData, 'RSI14')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n break\n }\n case 'Backtesting': {\n setupSessionReference(timelineChart, backSessionReference)\n break\n }\n case 'Paper Trading': {\n setupSessionReference(timelineChart, paperSessionReference)\n break\n }\n case 'Live Trading': {\n setupSessionReference(timelineChart, liveSessionReference)\n break\n }\n case 'Forward Testing': {\n setupSessionReference(timelineChart, ForwardSessionReference)\n break\n }\n }\n }\n\n function findDataProduct(singleMarketData, name) {\n for (let i = 0; i < singleMarketData.dataProducts.length; i++) {\n let dataProduct = singleMarketData.dataProducts[i]\n if (dataProduct.name === name) {\n return dataProduct\n }\n }\n }\n function setupSessionReference(timelineChart, sessionReference) {\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n switch (j) {\n case 0: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Simulation')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 1: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Conditions')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 2: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Trades')\n layer.payload.referenceParent = dataProduct\n break\n }\n case 3: {\n let dataProduct = findDataProduct(sessionReference.singleMarketData, 'Strategies')\n layer.payload.referenceParent = dataProduct\n break\n }\n }\n layer.payload.uiObject.physics()\n }\n }\n\n let exchangeAndMarket = superAction.payload.parentNode.payload.parentNode.payload.parentNode.name + ' ' + market.name\n timeMachine.name = exchangeAndMarket\n\n for (let i = 0; i < dataMiningTaskManagers.length; i++) {\n let dataMiningTaskManager = dataMiningTaskManagers[i]\n dataMiningTaskManager.name = dataMiningTaskManager.name + ' ' + market.name\n }\n\n testingEnvironmentTaskManager.name = testingEnvironmentTaskManager.name + ' ' + market.name\n productionEnvironmentTaskManager.name = productionEnvironmentTaskManager.name + ' ' + market.name\n return true\n }\n}\n/*\nEnd Manster Script\n*/","id":"d234c201-4b50-48c6-be9d-f3b141c8cc16","savedPayload":{"position":{"x":41548.32244265533,"y":30912.60005263605},"targetPosition":{"x":41244.764134980585,"y":30608.79687674474},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{}}},"id":"95b24e48-3b10-47cb-b149-8667571f4a83","savedPayload":{"position":{"x":41244.907497988934,"y":30608.659032937445},"targetPosition":{"x":40500.785430914875,"y":31038.241941751345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":"o"}}},{"type":"Master Script","name":"Delete Market Dependencies ","templateScripts":[{"type":"Template Script","name":"Delete Testing Environment Task Managers","templateTarget":{"type":"Template Target","name":"New Template Target","id":"a97aa286-3199-4362-900a-65b604bf5b9a","savedPayload":{"position":{"x":41732.78855797973,"y":31046.046225017693},"targetPosition":{"x":41585.66014346706,"y":31205.721877603395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Testing Environment","name":"New Testing Environment","id":"2ae685a1-25c6-4bd5-b559-d83e373e8d45"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Testing Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeTasks.length; e++) {\n let exchangeTasks = target.exchangeTasks[e]\n if (exchangeTasks.payload.referenceParent !== undefined) {\n if (exchangeTasks.payload.referenceParent.id === exchange.id) {\n for (let k = 0; k < exchangeTasks.taskManagers.length; k++) {\n let taskManager = exchangeTasks.taskManagers[k]\n checkReferenceToMarket()\n function checkReferenceToMarket() {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n if (process.marketReference.payload !== undefined) {\n if (process.marketReference.payload.referenceParent !== undefined) {\n if (process.marketReference.payload.referenceParent.id === market.id) {\n nodesToDelete.push(taskManager)\n return\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (exchangeTasks.taskManagers.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeTasks)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"9d020e32-68e5-4123-b0ad-cb443d778905","savedPayload":{"position":{"x":41788.24384500944,"y":31129.221143445306},"targetPosition":{"x":41585.66014346706,"y":31205.721877603395},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"12eb790b-7f24-48bf-a4f0-34159f3d1863","savedPayload":{"position":{"x":41585.66014346706,"y":31205.721877603395},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Production Environment Task Managers","templateTarget":{"type":"Template Target","name":"New Template Target","id":"2ef5ba0f-10f7-4af0-81c1-2e89b9aea583","savedPayload":{"position":{"x":41857.17967696407,"y":31265.76689070154},"targetPosition":{"x":41659.83644223812,"y":31356.581402238644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Production Environment","name":"New Production Environment","id":"32656457-f603-416a-b805-546642094dc4"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Production Environment') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeTasks.length; e++) {\n let exchangeTasks = target.exchangeTasks[e]\n if (exchangeTasks.payload.referenceParent !== undefined) {\n if (exchangeTasks.payload.referenceParent.id === exchange.id) {\n for (let k = 0; k < exchangeTasks.taskManagers.length; k++) {\n let taskManager = exchangeTasks.taskManagers[k]\n checkReferenceToMarket()\n function checkReferenceToMarket() {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n if (process.marketReference.payload !== undefined) {\n if (process.marketReference.payload.referenceParent !== undefined) {\n if (process.marketReference.payload.referenceParent.id === market.id) {\n nodesToDelete.push(taskManager)\n return\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (exchangeTasks.taskManagers.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeTasks)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"9f9515a8-2e47-4a6f-acc3-6e4e01a610b2","savedPayload":{"position":{"x":41876.379034721525,"y":31364.77796175071},"targetPosition":{"x":41659.83644223812,"y":31356.581402238644},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"29b330a4-d4f6-45ac-8b41-090740dc418f","savedPayload":{"position":{"x":41659.83644223812,"y":31356.581402238644},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Data Mining Task Managers","templateTarget":{"type":"Template Target","name":"New Template Target","id":"c3417c9a-68b3-4d49-9514-0d2d30cea254","savedPayload":{"position":{"x":41887.823055881236,"y":31515.576655158533},"targetPosition":{"x":41670.97306556218,"y":31523.705009373192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Data Mining","name":"New Data Mining","id":"7449a608-32ca-4285-94d1-c96791e2817f"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Data Mining') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Data Mining.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeTasks.length; e++) {\n let exchangeTasks = target.exchangeTasks[e]\n if (exchangeTasks.payload.referenceParent !== undefined) {\n if (exchangeTasks.payload.referenceParent.id === exchange.id) {\n for (let k = 0; k < exchangeTasks.taskManagers.length; k++) {\n let taskManager = exchangeTasks.taskManagers[k]\n checkReferenceToMarket()\n function checkReferenceToMarket() {\n for (let i = 0; i < taskManager.tasks.length; i++) {\n let task = taskManager.tasks[i]\n if (task.bot !== undefined) {\n if (task.bot.processes !== undefined) {\n for (let j = 0; j < task.bot.processes.length; j++) {\n let process = task.bot.processes[j]\n if (process.marketReference !== undefined) {\n if (process.marketReference.payload !== undefined) {\n if (process.marketReference.payload.referenceParent !== undefined) {\n if (process.marketReference.payload.referenceParent.id === market.id) {\n nodesToDelete.push(taskManager)\n return\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (exchangeTasks.taskManagers.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeTasks)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"2d8e00e3-836a-426d-9f78-db3262bd7454","savedPayload":{"position":{"x":41867.82051428597,"y":31615.00974020917},"targetPosition":{"x":41670.97306556218,"y":31523.705009373192},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"e8e96f57-041e-4c0d-a2bf-5a8e444636b1","savedPayload":{"position":{"x":41670.97306556218,"y":31523.705009373192},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Dashboard Time Machines","templateTarget":{"type":"Template Target","name":"New Template Target","id":"1cbc9a0e-d00e-4506-9a33-5fbcb3ed8900","savedPayload":{"position":{"x":41819.94067531539,"y":31758.055664847387},"targetPosition":{"x":41616.77907128229,"y":31682.80823680443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Dashboard","name":"Super Action Generated","id":"64fa2a31-21ea-4b56-a625-dc4082876a89"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Dashboard') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Dashboard.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let k = 0; k < target.timeMachines.length; k++) {\n let timeMachine = target.timeMachines[k]\n for (let i = 0; i < timeMachine.timelineCharts.length; i++) {\n let timelineChart = timeMachine.timelineCharts[i]\n for (let j = 0; j < timelineChart.layersManager.layers.length; j++) {\n let layer = timelineChart.layersManager.layers[j]\n if (layer.payload.referenceParent !== undefined) {\n if (layer.payload.referenceParent.payload !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode.payload !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode.payload.referenceParent !== undefined) {\n if (layer.payload.referenceParent.payload.parentNode.payload.referenceParent.id === market.id) {\n\n nodesToDelete.push(timeMachine)\n\n }\n }\n }\n }\n }\n }\n }\n }\n }\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"cf8f6b69-70f8-4035-801d-276c1e2d6b5d","savedPayload":{"position":{"x":41764.18549495923,"y":31842.704450059176},"targetPosition":{"x":41616.77907128229,"y":31682.80823680443},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"c78e76fc-311b-4ac7-942f-af9629ea8b76","savedPayload":{"position":{"x":41616.77907128229,"y":31682.80823680443},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Single Market Data","templateTarget":{"type":"Template Target","name":"New Template Target","id":"2d36e591-3314-4a0c-b04d-6372e961959d","savedPayload":{"position":{"x":41666.04725816549,"y":31955.700833370393},"targetPosition":{"x":41506.809339652435,"y":31808.303750284915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Independent Data","name":"New Session Independent Data","id":"bf04ccea-266d-4115-b50e-fefdf29b873a"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Independent Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Independent Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeDataProducts.length; e++) {\n let exchangeDataProducts = target.exchangeDataProducts[e]\n if (exchangeDataProducts.payload.referenceParent !== undefined) {\n if (exchangeDataProducts.payload.referenceParent.id === exchange.id) {\n for (let i = 0; i < exchangeDataProducts.singleMarketData.length; i++) {\n let singleMarketData = exchangeDataProducts.singleMarketData[i]\n if (singleMarketData.payload !== undefined) {\n if (singleMarketData.payload.referenceParent !== undefined) {\n if (singleMarketData.payload.referenceParent.id === market.id) {\n nodesToDelete.push(singleMarketData)\n }\n }\n }\n }\n if (exchangeDataProducts.singleMarketData.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeDataProducts)\n }\n }\n }\n }\n\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"168466d3-1446-4b45-a647-ad962d1d5f2c","savedPayload":{"position":{"x":41582.12499520348,"y":32011.953410600858},"targetPosition":{"x":41506.809339652435,"y":31808.303750284915},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"f23edd8e-b0f9-4531-9550-69cdb0616bcc","savedPayload":{"position":{"x":41506.809339652435,"y":31808.303750284915},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}},{"type":"Template Script","name":"Delete Session References","templateTarget":{"type":"Template Target","name":"New Template Target","id":"4fe33613-3b67-4e0f-a4b4-6caa4e6dd163","savedPayload":{"position":{"x":41446.51226656648,"y":32080.643662213544},"targetPosition":{"x":41356.027965043744,"y":31883.144374524625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":4,"distanceToParent":2},"uiObject":{"isRunning":false},"referenceParent":{"type":"Session Based Data","name":"New Session Based Data","id":"29ca14e5-dabe-470a-be64-ed7996bd1e55"}}},"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"templateScriptConstructor = function () {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction) {\n /* Validations */\n\n if (templateScript.templateTarget.payload.referenceParent.type !== 'Session Based Data') {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent of type Session Based Data.')\n return\n }\n return true\n }\n\n function runScript(superAction, templateScript) {\n let target = templateScript.templateTarget.payload.referenceParent\n\n let nodesToDelete = []\n for (let e = 0; e < target.exchangeSessions.length; e++) {\n let exchangeSessions = target.exchangeSessions[e]\n if (exchangeSessions.payload.referenceParent !== undefined) {\n if (exchangeSessions.payload.referenceParent.id === exchange.id) {\n for (let i = 0; i < exchangeSessions.sessionReferences.length; i++) {\n let sessionReference = exchangeSessions.sessionReferences[i]\n let singleMarketData = sessionReference.singleMarketData\n if (singleMarketData !== undefined) {\n if (singleMarketData.payload !== undefined) {\n if (singleMarketData.payload.referenceParent !== undefined) {\n if (singleMarketData.payload.referenceParent.id === market.id) {\n nodesToDelete.push(sessionReference)\n }\n }\n }\n }\n }\n if (exchangeSessions.sessionReferences.length === nodesToDelete.length) {\n nodesToDelete.push(exchangeSessions)\n }\n }\n }\n }\n for (let i = 0; i < nodesToDelete.length; i++) {\n deleteNode(nodesToDelete[i])\n }\n }\n}","id":"f2cc52fd-cea8-437f-aa7d-a4d1100bb92e","savedPayload":{"position":{"x":41346.763607531524,"y":32099.90703320189},"targetPosition":{"x":41356.027965043744,"y":31883.144374524625},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2},"uiObject":{}}},"id":"f8ffadd5-8eda-4c4e-be1c-c49b98045b42","savedPayload":{"position":{"x":41356.027965043744,"y":31883.144374524625},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{"isRunning":false}}}],"javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"/*\nMaster Script\n*/\nfunction newNewMasterScriptInstance() {\n let thisObject = {\n runValidations: runValidations,\n runScript: runScript\n }\n return thisObject\n\n function runValidations(superAction, masterScript) {\n /* Validations */\n if (superAction.payload.parentNode.type !== 'Market') {\n superAction.payload.uiObject.setErrorMessage('Super Action Parent Node needs to be of type Market.')\n return\n }\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n if (superAction.payload.parentNode.type !== 'Market') {\n superAction.payload.uiObject.setErrorMessage('Super Action Parent Node needs to be of type Market.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Market needs to be a child of Exchange Markets.')\n return\n }\n if (superAction.payload.parentNode.payload.parentNode.payload.parentNode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Exchange Markets needs to be a child of an Exchange.')\n return\n }\n if (templateScript.javascriptCode === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Javascript Code.')\n return\n }\n if (templateScript.templateTarget === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Script must have a child Template Target.')\n return\n }\n if (templateScript.templateTarget.payload.referenceParent === undefined) {\n superAction.payload.uiObject.setErrorMessage('Template Target must have a Reference Parent.')\n return\n }\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n executionResult = templateScriptInstance.runValidations(superAction)\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n return true\n }\n\n function runScript(superAction, masterScript) {\n let market = superAction.payload.parentNode\n let exchange = superAction.payload.parentNode.payload.parentNode.payload.parentNode\n\n for (let i = 0; i < masterScript.templateScripts.length; i++) {\n let templateScript = masterScript.templateScripts[i]\n\n try {\n let templateScriptConstructor\n\n eval(templateScript.javascriptCode.code)\n\n let executionResult = true\n let templateClone\n let templateScriptInstance = templateScriptConstructor()\n\n if (executionResult === true) {\n templateClone = templateScriptInstance.runScript(superAction, templateScript)\n }\n\n if (executionResult !== true) { return false }\n } catch (err) {\n console.log(err.stack)\n superAction.payload.uiObject.setErrorMessage(err.message)\n return false\n }\n }\n\n return true\n }\n}\n/*\nEnd Manster Script\n*/","id":"a9538a7f-32dd-4068-8af6-0f8a83f6f3c7","savedPayload":{"position":{"x":41188.18897094093,"y":31893.039611222073},"targetPosition":{"x":41244.90242325793,"y":31467.8328406124},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2},"uiObject":{}}},"id":"c25d0331-8ac0-4834-aa77-743487455d45","savedPayload":{"position":{"x":41244.90758463524,"y":31467.821742534303},"targetPosition":{"x":40500.785430914875,"y":31038.241941751345},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3},"uiObject":{"isRunning":false}}}],"id":"1dd2a75d-7d97-4994-8c95-b392d933b1c1","savedPayload":{"position":{"x":40500.785430914875,"y":31038.241941751345},"targetPosition":{"x":39641.041459281856,"y":31038.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":"S"}}},"id":"17b5ea06-62d8-4a79-b0ba-f9d3b997c17f","savedPayload":{"position":{"x":39641.041459281856,"y":31038.13836154292},"targetPosition":{"x":39641.041459281856,"y":31038.13836154292},"floatingObject":{"isPinned":true,"isFrozen":false,"isCollapsed":true,"angleToParent":1,"distanceToParent":3},"uiObject":{"isRunning":false,"shortcutKey":""}}} \ No newline at end of file